为什么 Unix 为 FAT 文件系统设置可执行标志?

为什么 Unix 为 FAT 文件系统设置可执行标志?

我注意到,当我在 Linux 上安装 FAT 文件系统时,所有文件都设置了可执行权限。为什么是这样?您几乎不可能或不想直接执行 FAT 文件系统上的任何程序,并且为所有文件隐式设置可执行位对我来说似乎很烦人。

我知道 FAT(以及其他文件系统)没有模式位,因此我在文件上看到的 777 模式只是由文件系统驱动程序模拟在Unix下。我的问题是为什么是 777 而不是 666?

答案1

FAT 可能不是 POSIX 风格的文件系统,这并不意味着您不应该被允许在其上存储可执行文件并直接从中运行它们。因为 FAT 不存储 POSIX 权限,所以(很容易)发生这种情况的唯一方法是文件使用的默认模式允许它们执行......

过去,当 (V)FAT 仍被用作其他操作系统(DOS 和 Windows)的主要文件系统且硬盘驱动器较小时,在 FAT 文件系统上存储 Unix/Linux 二进制文件并不罕见。 (甚至还有一个 FAT 变体,它将 POSIX 属性存储在特殊文件中,因此您可以在 FAT 文件系统上运行 Linux。)现在您仍然可以这样做 - 例如在 USB 密钥上。

如果您担心安全隐患,可以使用多种选项。noexec并且nodev可能已经在您的发行版上设置为可移动文件系统;dmaskfmask允许您具体确定所使用的模式。showexec只会设置带有.bat,.com.exe扩展名的文件的可执行位。 (请注意,文件的权限和执行它的能力是分开的......)

相关内容