亚行“权限被拒绝”以运行“ ./configure”文件


9

我需要在configureAndroid手机中运行文件,所以我认为最好的方法是使用adb shell命令。

我在Windows-7平台上运行Android模拟器,并在adb shellDOS窗口中运行命令。使用cd命令我将更改到文件所在的目录configure,然后执行以下命令:./configure。我收到以下错误:

./configure: permission denied

因此,我尝试使用adb root- 在root模式下运行adb,但显然我的adb已经处于root模式下(而且,我的adb shell的每一行之前都有“#”字符)。

我也尝试过使用,chmod但是执行此命令(ls -la)前后没有任何区别,所以问题可能出在这里(我如何运行该chmod命令?)。

也许这里有人可以帮助我解决我的问题,如果您还对为什么我没有运行configure文件的权限进行了解释,那将很好。

谢谢。

PS:我的目标是在Android平台上使用net-snmp包,方法是将该项目的源代码直接编译到平台上。


3
那可能是问题所在。/sdcard通常noexec在Android中与该标志一起挂载,因此您无法从中执行二进制文件。我建议尝试将其移动到其他地方(通常/data/local用于此类操作)。看看是否能解决问题。
eldarerathis 2012年

3
另外,将其复制到/usr/local/tmp目录(..中的整个net-snmp-5.7.2目录/sdcard
Liam W

1
@ t0mm13b不能完全确定这是否是题外话,因为这对于需要在其设备上执行文件的人员(例如root漏洞利用)很有用。
利亚姆W

1
好,谢谢。我的问题更多是关于如何使用adb shell运行脚本sh而非开发问题。但是现在我有了解决方案:“ / sdcard已安装了noexec标志”,因此,如果eldarerathis或Liam W希望将其注释放入真实答案中,我将对其进行验证。或者,也许您可​​以向我解释我该如何结束我的问题?
grattmandu03 2012年

1
@ grattmandu03我已经有;)
Liam W

Answers:


10

这是由于两件事:

  1. 该文件没有执行权限[AND]
  2. 该文件无法获得可执行权限,就像在SD卡上一样。SD卡的文件系统可以接受文件权限,但是noexec如注释中所述,它带有标志挂载。这将停止执行文件。

解:

  1. net-snmp-5.7.2目录复制/data/local/tmp为根目录。
  2. configure通过以超级用户chmod 0777 /data/local/tmp/net-snmp-5.7.2/configure身份运行将文件设置为可执行文件。
  3. 现在,您应该能够通过键入/data/local/tmp/net-snmp-5.7.2/configure并按Enter 键来执行配置脚本。

注意

这都应该以root用户身份完成:)


8

如评论和Liam的回答所述,这是由于noexec系统在安装sdcard时使用的标志。如果您的configure文件是一个shell脚本(通常是这样),您仍然可以欺骗它执行:

cd到如上所述的目录,然后执行sh configure

sh是Shell解释器,并且该二进制文件应该位于/system/bin,其中文件可执行文件。将脚本作为第一个参数传递,这将打开一个执行您configure脚本的新Shell进程。


感谢您的回答。该sh configure做的伎俩。
grattmandu03

1
感谢您的确认!很高兴我能够提供帮助。我不时在Linux / Unix计算机上使用此技巧:)
Izzy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.