无法更改文件权限

无法更改文件权限

每当我创建或复制几个 shell 文件到 USB 存储设备时,我就无法使它们可执行。

如果我创建test.sh,它的默认文件权限将为644,但是当我执行时

chmod 777 测试.sh

没有错误报告并且echo $?也返回“0”。但仍然ls -l显示权限为644,我无法执行它./test.sh

答案1

是的,如果您的设备使用不支持此类权限设置(例如 VFAT)的文件系统进行格式化,则可能会发生这种情况。在这些情况下,umask 是根据 fstab(或热插拔等效项)中的设置动态创建的。

很可能请参阅 man mount 了解详细信息。例如,对于 VFAT,我们发现:

脂肪的安装选项

uid=值 和 gid=值

设置所有文件的所有者和组。 (默认:当前进程的uid和gid。)

umask=值

设置umask(不存在的权限的位掩码)。默认是当前进程的umask。该值以八进制给出。

ETC。

答案2

看起来您的文件系统安装了该noexec选项,该选项禁止在该文件系统上执行程序,就像权限中的所有执行位都未设置一样。如果您使用user挂载选项(或者某些用户界面在后台使用它),则noexec打开,除非您使用 明确将其关闭exec

大多数 USB 记忆棒使用 MSDOS 派生的 VFAT 文件系统,该系统没有权限的概念。您只能在挂载文件系统时指定权限位,并且这些权限适用于该文件系统上的所有文件。

如果您没有执行脚本的权限,请显式调用解释器:

sh /media/stick/test.sh

对于动态链接的二进制文件,调用动态链接器。

/lib/ld-linux.so.2 /media/stick/myprog

相关内容