当前位置: 首页 > article >正文

Android Shell上执行可执行文件报错:Permission denied

原因分析

  1. 文件系统挂载为noexec

    • Android的某些分区(如/sdcard/storage)默认挂载为noexec,禁止直接执行其中的文件。
    • 使用mount命令可查看挂载选项,若包含noexec,则该分区下的文件无法执行。
  2. SELinux安全策略限制

    • SELinux可能阻止非系统目录下的可执行文件运行,尤其是在非标准路径(如用户自定义目录)。

解决方案

1. 将文件移动到可执行目录

Android中以下目录通常允许执行文件:

# 将zstd复制到临时可执行目录
adb push zstd /data/local/tmp/zstd
adb shell chmod 755 /data/local/tmp/zstd
adb shell "cd /data/local/tmp && ./zstd 00.zip"
2. 检查文件系统挂载选项
adb shell mount | grep -E '/data|/sdcard|/system'
  • 如果目标目录挂载为noexec,需移动文件到其他目录(如/data/local/tmp)。
3. 检查SELinux策略
  • 临时禁用SELinux(需root):
    adb shell su -c setenforce 0
    
  • 查看SELinux拒绝日志:
    adb shell dmesg | grep avc
    
    若有相关拒绝记录,需调整SELinux规则或移动文件到合法路径。

完整操作示例

# 推送文件到可执行目录
adb push zstd /data/local/tmp/zstd

# 赋予执行权限
adb shell chmod +x /data/local/tmp/zstd

# 执行命令
adb shell /data/local/tmp/zstd /sdcard/00.zip

http://www.kler.cn/a/593347.html

相关文章:

  • Qt窗口控件之颜色对话框QColorDialog
  • 什么是Apache Avro?
  • ubuntu高并发内核参数调优 - (压测客户端调优)
  • Elasticsearch:使用 ColPali 进行复杂文档搜索 - 第 1 部分 - 8.18
  • 解锁 AI 开发的无限可能:邀请您加入 coze-sharp 开源项目
  • Nginx 日志格式
  • docker利用ollama +Open WebGUI在本地搭建部署一套Deepseek-r1模型
  • uniapp路由跳转导致页面堆积问题
  • 涨薪技术|Kubernetes(k8s)之Pod端口设置及资源配额
  • 蓝桥杯 之 拔河(2024年C/C++ B组 H题)
  • Leetcode 50.Pow(x,n) 使用快速幂求解
  • Flask从入门到精通--初始Flask
  • 仓库管理不能仅流于形式,需挖掘潜在价值
  • [科普] git和github等是什么关系 (由DS-R1生成)
  • Android SDK下载安装配置
  • 机器学习快速入门教程
  • 栈/堆/static/虚表
  • Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点
  • MySQL 在 CentOS 7 上安装的步骤指南
  • Web3身份验证技术对数据保护的影响研究