无法为 NTFS 分区上的文件设置权限

ash*_*ony 13 filesystem permissions 10.10

我记得在我安装 10.10 RC 之前,我能够运行放置在 NTFS 分区上的 Linux .exe。但是如果我现在尝试运行它,我无法运行它,因为它没有执行权限。不好的部分是我也无法更改权限。我是chmod-ding+x但它的权限没有任何变化。

所以这似乎是一个错误?有什么帮助吗?

虽然当我把它放在ext4分区上时,我可以设置权限。但我想像以前一样,从默认的 NTFS 位置开始。

Mat*_*ley 12

NTFS 不支持执行权限,因为它是为 Windows 设计的,它不像 Linux 那样具有“可执行”文件的相同概念。如果您尝试在 Wine 中运行 Windows .exe 文件,如果您显式运行 wine,它应该仍然可以工作,如下所示:

wine /path/to/executable.exe
Run Code Online (Sandbox Code Playgroud)

如果确实需要直接执行文件,则可以使用 中的选项设置将应用于所有文件的权限。如果这不是 NTFS 的默认设置,您可能还需要添加该选项(我现在没有方便检查的驱动器)。for 的值告诉驱动程序要关闭哪些位,因此,例如,要允许所有用户读取、写入和执行,您应该具有如下内容:fmask/etc/fstabexecfmask

/dev/hda1  /mnt/windows  ntfs-3g  defaults,exec,fmask=000  0  0
Run Code Online (Sandbox Code Playgroud)

如果已经有一个fmask选项,打开执行位的最简单方法是从任何奇数中减去 1。

如果您不知道权限屏蔽是如何工作的,那么基本思想是读取、写入和执行权限分别由值 4、2 和 1 表示。您可以将它们加在一起以组合权限,例如,读取 + 写入将为 6。权限掩码是适用于所有者、组和“其他人”(其他所有人)的三位数字的组合。

请记住fstab 中的fmask(also,umaskdmask) 是您要关闭的权限。

作为一个稍微有趣的例子,这会将权限设置为所有者的“rwx”,组的“rx”和其他所有人的“r”:

/dev/hda1  /mnt/windows  ntfs-3g  defaults,exec,fmask=023  0  0
Run Code Online (Sandbox Code Playgroud)