Termux脚本权限解决指南

29次阅读
没有评论

解决Termux中执行脚本遇到的权限问题

您提到的问题发生在一个基于Termux的应用场景下,具体表现为尝试运行脚本时出现Permission denied错误。以下是一些可能的原因及解决方法:

一、exec su --mount-master -c "..."命令导致的问题

  1. 原因su命令及其调用环境不允许您直接以这种方式执行,特别是在Termux应用中。直接使用su获取超级用户权限,并尝试在子shell环境中保持该权限是不可行的。
  2. 解决方法
  3. 直接运行您想要执行的所有命令,而无需试图将这些命令放入su调用中的子shell环境。
  4. 例如,如果需要改变执行路径以具有足够的权限进行文件操作,请直接通过普通用户模式下的路径来访问相关目录。请参考您提供的链接以获取更多详细的指导。

二、rclone mount命令运行时遇到权限问题

  1. 原因:尽管文件具有可执行权限(755),但在Termux中,某些工具默认情况下可能没有足够高的权限直接执行。
  2. 解决方法
  3. 确认rclone的安装路径是否正确以及该路径下存在必要的库文件等。
  4. 如果rclone作为可执行文件在您的PATH环境变量中未被正确添加,修改您的脚本,在调用之前明确指定其完整路径。

三、关于SELinux和Root权限问题

  1. 原因:虽然您的设备设置了为Permissive模式,但仍可能遇到权限拒绝错误,特别是当您尝试进行文件系统挂载等操作时。
  2. 解决方法
  3. 使用chmod, chown等命令调整相关文件和目录的权限设置,并确保它们符合所需的操作类型(如读取、写入或执行)。
  4. 可能需要重启Termux或者设备来使更改生效。

四、尝试调试并获取更多线索

  1. 执行以下修改后的脚本:
#!/data/data/com.termux/files/usr/bin/bash

tsu # 或者直接用其他方法切换到Root用户权限下,确保命令可以在root状态下正确执行。
[ $(id -u) -eq 0 ] || exec su --mount-master -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH HOME=$HOME PATH=$PATH:$HOME/bin $0"

# 然后添加调试信息,以帮助进一步定位问题
echo "Script Running in Root Mode" >> /sdcard/termux.log
rclone -v mount GDrive: /mnt/runtime/write/emulated/0/GDrive --gid 9997 --dir-perms 0771 --file-perms 0660 --umask=0 --allow-other 
  1. 检查/sdcard/termux.log文件内容以获取更多关于脚本执行情况的信息。

更新您的问题状态

  • 根据上述步骤进行操作后,重新尝试运行脚本并检查是否有新的错误。
  • 如果仍然存在问题,请提供具体的日志或报告当前遇到的新情况,并寻求进一步的帮助。

通过这些步骤,您可以更清晰地了解为何及在何处出现了权限拒绝的情况。希望这些建议对您有所帮助!

正文完