sshfs
にマウントされたディレクトリのマウントポイントとして使用する/mnt/mountpoint
フォルダがあると仮定します。
sshfs user@Host /mnt/mountpoint
ここで、マウント解除中にアプリケーションが/mnt/mountpoint
に書き込むのを防ぎたいと思います。私が見つけた質問 ここ と ここ は使用を意味する答えを持っています
Sudo chattr +i /mnt/mountpoint
これは、書き込みアクセスを防ぐために正常に機能します。残念ながら、通常のユーザーとしてsshfs
でマウントすることもできません。
これに対する最善の解決策は何でしょうか?単一のsshfsコマンドか、少なくともroot権限を必要としないものをお勧めします。 chattr
アプローチを放棄して、まったく異なることを試す必要がありますか?
マウントポイントのデフォルトのアクセス許可
でマウントポイントを作成します
mkdir --mode=0500 -p /mnt/mountpoint
作成ユーザーのみが書き込み可能になります。 rc.localからこれを事前入力できます。そのマウントポイントの上にあるファイルシステムをマウントすると、マウント時に設定したオーバーレイのアクセス許可が取得されます。
ちなみに、chattr +i
は避けたいと思います。そうすると、人々が混乱し、トラブルシューティングが楽しくなるからです。
IdentityFile
のsshfs
オプションを使用して、これをchattr +i
で動作させることができました。
これを機能させるには、キーを生成してリモートホストに追加する必要があります。
ssh-keygen && ssh-copy-id username@Host
それが完了したら、sshfsでSudoを使用してホストをマウントできます。
# 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*