web-dev-qa-db-ja.com

マウントされていないsshfsマウントポイントへの書き込みを防止する

sshfsにマウントされたディレクトリのマウントポイントとして使用する/mnt/mountpointフォルダがあると仮定します。

sshfs user@Host /mnt/mountpoint

ここで、マウント解除中にアプリケーションが/mnt/mountpointに書き込むのを防ぎたいと思います。私が見つけた質問 ここここ は使用を意味する答えを持っています

Sudo chattr +i /mnt/mountpoint

これは、書き込みアクセスを防ぐために正常に機能します。残念ながら、通常のユーザーとしてsshfsでマウントすることもできません。

これに対する最善の解決策は何でしょうか?単一のsshfsコマンドか、少なくともroot権限を必要としないものをお勧めします。 chattrアプローチを放棄して、まったく異なることを試す必要がありますか?

4
Slizzered

マウントポイントのデフォルトのアクセス許可

でマウントポイントを作成します

mkdir --mode=0500 -p /mnt/mountpoint

作成ユーザーのみが書き込み可能になります。 rc.localからこれを事前入力できます。そのマウントポイントの上にあるファイルシステムをマウントすると、マウント時に設定したオーバーレイのアクセス許可が取得されます。

ちなみに、chattr +iは避けたいと思います。そうすると、人々が混乱し、トラブルシューティングが楽しくなるからです。

2
Aaron

IdentityFilesshfsオプションを使用して、これを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*

0
Cameron Sanders