Permissions
mount.cifs 不尊重 Ubuntu 12.04.2 LTS 中的文件權限
我正在嘗試使用 /etc/fstab 中的以下行在標準 Ubuntu 12.04.2 LTS 中安裝 cifs 驅動器:
//server-name/share-name /mnt/archive cifs uid=1002,file_mode=0440,credentials=/etc/.smbcredentials,iocharset=utf8,sec=ntlmi 0 0
此掛載將用於儲存備份,因此我想以創建文件的權限掛載它,但不刪除它們。一切似乎都在正常工作,除了我可以進去刪除,只發出警告。
myuser@localhost:/mnt/archive$ ls -l -r--r----- 0 myuser root 51 Sep 19 17:56 deleteThis.txt -r--r----- 0 myuser root 51 Sep 19 17:31 deleteThis.txt.bak myuser@localhost:/mnt/archive$ rm deleteThis.txt.bak rm: remove write-protected regular file `deleteThis.txt.bak'? y myuser@localhost:/mnt/archive$ ls -l -r--r----- 0 myuser root 51 Sep 19 17:56 deleteThis.txt
為什麼我的文件權限不被尊重?這是Ubuntu的東西嗎?
有沒有辦法通過 cifs 掛載網路共享而不暴露文件被刪除?
Linux 不單獨管理刪除文件的權限和創建文件的權限。在這兩種情況下,重要的是您是否具有目錄的寫權限。由於您保留了目錄的預設模式,因此 myuser 可以寫入
/mnt/archive
並因此可以刪除那裡的文件以及創建它們。
rm
當您嘗試刪除只讀文件時提示確認,但這並不意味著您沒有刪除它的權限:這意味著您確實有權限刪除它但rm
認為它可能是一個壞的這樣做的想法。您可以通過在目錄 ( ) 上設置“粘性位”來防止使用者刪除他們不擁有
chmod +t
的文件,就像/tmp
. 使用掛載選項dir_mode=1755
。您不能阻止使用者刪除他們自己的文件,除非不授予他們在該目錄中創建文件的權限。
允許使用者創建他們無法刪除的文件很奇怪。如果你真的想要,你需要比經典的 unix 文件權限或 Solaris/Linux ACL 更靈活的東西(我認為你可以使用 OSX ACL 來做到這一點)。