Linux
防止寫入未掛載的 sshfs 掛載點
假設我有一個文件夾
/mnt/mountpoint
用作某些sshfs
-mounted 目錄的掛載點:sshfs user@host /mnt/mountpoint
現在,我想阻止應用程序在
/mnt/mountpoint
解除安裝時寫入。我在這里和這裡找到的問題有暗示使用的答案sudo chattr +i /mnt/mountpoint
這可以很好地防止任何寫訪問。不幸的是,它也阻止了我
sshfs
作為普通使用者安裝。什麼是最好的解決方案?我更喜歡單個 sshfs-command 或至少不需要 root 權限的東西。我應該放棄這種
chattr
方法並嘗試完全不同的方法嗎?
掛載點預設權限
創建掛載點
mkdir --mode=0500 -p /mnt/mountpoint
只有創建使用者才能對其進行寫入。您可以從 rc.local 預填充它。當您在該掛載點之上掛載任何文件系統時,它將獲取您在掛載時設置的該覆蓋的權限。
附帶說明一下,我會避免
chattr +i
這樣做,因為如果不是每個人都知道你這樣做了,那會使人們感到困惑並導致故障排除的樂趣。
我通過
chattr +i
使用IdentityFile
.sshfs
為此,您需要生成密鑰並將其添加到遠端主機。
ssh-keygen && ssh-copy-id username@host
完成後,您可以使用 sudo 和 sshfs 來掛載主機。
# If not running the sshfs command from a script, # you need to save the following values prior to running sshfs. # If you don't, they will be interpreted as the root user's env variables. sshfs_uid="$UID" sshfs_gid="$GID" sshfs_key"$HOME/.ssh/id_rsa" # Please note that all options passed to sshfs are required. # Using these options will allow your user to read + write to the mounted dir. # If they are not passed, your user won't be able to access the mounted dir. sudo sshfs -o uid=$sshfs_uid -o gid=$sshfs_gid -o IdentityFile=$sshfs_key -o allow_other username@host:/path /path/to/mountpoint
如果您想將此作為腳本的一部分添加或使其在登錄時自動進行,您可能不想每次都輸入密碼。
要解決這個問題:
sudo visudo
# Assuming your sudo group is "wheel". # And assuming the permissions for your wheel group look something like this. %wheel ALL=(ALL) ALL # Add this line after the above line to allow sshfs mounting without a password %wheel ALL=(ALL) NOPASSWD:/usr/bin/sshfs*