
我有一個~/nas
通常用來sshfs
安裝網路磁碟機的資料夾。今天,我沒有意識到共享尚未掛載,並複製了一些數據到其中。我花了一些時間才意識到我只是將資料複製到我自己的本機磁碟機而不是網路共用中。是否有某種方法可以在系統中標記該資料夾應該是掛載點,並且不允許任何人將資料複製到其中?
我在這裡嘗試了權限解決方案:如何僅允許程式在已安裝的情況下寫入目錄?,但如果我沒有寫入存取權限,我也無法向其安裝任何內容。
答案1
只要你是不是root,您只需撤銷對的寫入權限~/nas自己的目錄並使用 sudo 進行提升安裝:
$ chmod u-w ~/nas
$ cd ~/nas
$ touch test
touch: cannot touch `test': Permission denied
$ cd ..
$ sudo mount -t fuse -o <options> sshfs#<user>@<host>:/mount/path/ ~/nas
$ cd ~/nas
$ touch test
$
這一切背後的想法是:~/nas 作為掛載路徑,在未掛載目標時會分配給它的權限,從而防止您進行修改(只要您的用戶沒有 root 權限)。 mount 指令(需要 root 權限才能運作)暫時將資料夾的權限修改為目標權限設定的任何內容,從而允許使用者進行寫入存取。
答案2
我們使用了不可變的-flag 保護目錄,即使是 root 存取。
chattr +i /vmdata/backup
這樣,當沒有安裝任何東西時,即使 root 也不允許在那裡寫入。掛載磁碟後,一切正常。
答案3
您可以在那裡使用稍後建議的答案:
1st:使用mount指令檢查目錄是否已掛載
mount | grep <mountpoint>
會告訴你那裡是否安裝了任何東西。如果您確實想確保安裝了正確的東西,您可以使用更複雜的正規表示式,但我認為沒有必要這樣做。