我的运行 ubuntu 9.04 的旧机器坏了,所以我将一个闪存驱动器插入到运行 ubuntu 16.04 的新机器中。
但是,我无法从那里运行脚本,因为所有文件都失去了 x 权限。我可以复制这些文件,但无法对它们进行 chmod,甚至无法对 a+w 进行 chmod,甚至无法使用 sudo。
chmod 没有错误返回,echo $? 显示 0。
一切在 9.04 上完美运行。
以下是 mount 所说的内容:
/dev/sdd1 on /media/user/LABC type vfat
(rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
我知道https://askubuntu.com/a/17550/778232我不认为它是重复的。
首先,对于我的问题,不仅 +x 被忽略。其次,答案建议更改的文件在我的机器上不存在。
编辑:我不明白,如果 FAT 不支持类似 Linux 的标志,为什么它可以与 ubuntu 9.04 一起使用?
编辑2:
不行,这个没用。我卸载了设备,创建了一个新目录,然后挂载了它
mount /dev/sdd1 /media/LABC -o dmask=000,fmask=111
我可以看到文件,但仍然无法 chmod 或 chown(作为 root 用户)。chown 显示“操作不允许”。
答案1
当使用未针对 Linux 格式化的外部驱动器(FAT32、NTFS 等)时,您不能使用它chmod
来影响这些驱动器的权限。
chmod
仅支持支持 UNIX 权限的磁盘格式。如果您的磁盘是 FAT32 或 NTFS,则这些磁盘不支持 UNIX 权限,因此无法使用chmod
。
您需要更改磁盘上的挂载选项来挂载它,以便所有内容都具有执行位。
以你的用户身份执行此操作:sudo mount -t vfat -o remount,umask=0002,defaults,auto,uid=$(id -u),gid=$(id -g) /dev/sdd1 /media/LABC
这将提供+x
给所有文件。
答案2
就我的经验而言,如果您有双启动计算机,那么您很幸运,您可以在 Windows 中尝试“修复此驱动器”。这通常可以解决我的问题。