Permissions

為什麼 smbfs 掛載共享中的文件是使用可執行位集創建的?

  • November 23, 2021

我使用 smbmount 命令安裝了一個 samba 共享:

$ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom

當我創建新文件時,它們是使用為所有者、組和世界設置的可執行位創建的。例如

$ touch hello.txt 
$ ls -la hello.txt
-rwxr-xr-x 1 root root 0 Dec  2 12:28 hello.txt

在 NFS 掛載的共享上創建的相同文件會設置正確的權限,而無需設置任何可執行位。

為什麼會這樣?如何修復?

NFS 是在 Unix 世界中發明的,因此可以開箱即用地理解傳統的 Unix 權限。(現代 unix 系統的 ACL 是另一回事,但最近 NFS 的實現應該可以處理它們。)

Samba 是在 IBM/Microsoft PC 世界中發明的,用於與沒有隻讀/讀寫權限的系統交換文件。它現在是 Windows 原生的。預設情況下,Samba 不傳輸 Unix 權限。根據配置,要麼所有文件都標記為可執行(這很煩人),要麼所有文件(目錄除外)都標記為不可執行(這很煩人)。

Samba/CIFS 協議有各種擴展,使其更適合 Unix 使用。嘗試在伺服器配置中啟用Unix 擴展:

[global]
unix extensions = yes

引用自:https://unix.stackexchange.com/questions/103415