SD 卡文件的权限不会改变

SD 卡文件的权限不会改变

我有一个 shell 脚本,我想让它在 SD 卡上可执行。我已将文件夹权限更改为我的用户/组。没有问题。当我发出命令时,chmod a+x script.sh检查权限是否为ls -al只读。我尝试了sudo chmod +x script.sh各种其他 chmod 命令,但文件仍然是只读的。我尝试将脚本标记为可执行,并将其复制到 SD 卡。 cp -p script.sh /media/a/4C00-1447/cosmo 当我检查权限时,脚本又恢复为只读。我不明白这里发生了什么。这些命令都没有返回任何错误。如何将可执行脚本放在我的 SD 卡上?

答案1

您在 SD 卡上使用的 FAT32 不支持更改 unix 文件权限。所有文件都只有一个权限掩码,可以在使用umask=挂载选项挂载 FAT32 时设置。例如

 λ sudo mount /tmp/testfile mnt -o umask=000
 λ ll mnt/foo
-rwxrwxrwx 1 root root 0 ноя 30 23:40 mnt/foo

有一个解决方法:将 SD 卡格式化为 UDF 文件系统(请注意,格式化 SD 卡后,您将丢失之前存储在其中的所有数据)。它被大多数现有的操作系​​统支持,包括Windows和Mac OS,并且它还支持更改文件的unix权限,参见:

 λ truncate -s 50M /tmp/testfile && mkfs.udf /tmp/testfile
 […]
 λ sudo mount testfile /tmp/mnt
 λ sudo chown -R $(id -u):$(id -g) /tmp/mnt/
 λ touch /tmp/mnt/foo
 λ ll /tmp/mnt/foo
-rw-r--r-- 1 constantine constantine 0 ноя 30 23:49 /tmp/mnt/foo
 λ chmod +x /tmp/mnt/foo
 λ ll /tmp/mnt/foo
-rwxr-xr-x 1 constantine constantine 0 ноя 30 23:49 /tmp/mnt/foo

相关内容