Mount
為什麼 Unix 為 FAT 文件系統設置可執行標誌?
我注意到,當我在 Linux 上掛載 FAT 文件系統時,所有文件都設置了可執行權限。為什麼是這樣?您幾乎不可能或想要直接執行在 FAT 文件系統上找到的任何程序,並且為所有文件隱式設置可執行位對我來說似乎很煩人。
我知道 FAT(以及其他文件系統)沒有模式位,因此我在文件上看到的 777 模式只是由Unix 下的文件系統驅動程序模擬的。我的問題是為什麼 777 而不是 666?
FAT 可能不是 POSIX 樣式的文件系統,這並不意味著您不應該被允許在其上儲存執行檔並直接從中執行它們。因為 FAT 不儲存 POSIX 權限,所以(容易)發生這種情況的唯一方法是,如果用於文件的預設模式允許它們執行……
過去,當 (V)FAT 仍被用作其他作業系統(DOS 和 Windows)的主要文件系統,並且硬碟驅動器較小時,將 Unix/Linux 二進製文件儲存在 FAT 文件系統上並不罕見。(甚至還有一個 FAT 變體將 POSIX 屬性儲存在特殊文件中,因此您可以在 FAT 文件系統上執行 Linux。)如今您仍然可以這樣做——例如在 USB 密鑰上。
如果您擔心安全隱患,可以使用許多選項。
noexec
並且nodev
可能已經為您的發行版上的可移動文件系統設置了;dmask
並fmask
允許您具體確定使用的模式。showexec
只會在帶有.bat
,.com
或.exe
副檔名的文件上設置可執行位。(請注意,文件的權限和執行它的能力是分開的……)