Permissions
為什麼 smbfs 掛載共享中的文件是使用可執行位集創建的?
我使用 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