SFTPを使用して「作成するが変更しない」権限スキームを実行する方法を見つけました。しかし、ファイルにのみ機能します。ディレクトリに展開したい。
背景:
特定のユーザーグループをパブリックグループに制限するSFTPサーバー(OpenSSHベース)があります。chroot 刑務所目次。構成は似ています。これ会話。
このグループのユーザーがファイルとディレクトリを作成できますが、作成後に変更または削除できないようにしたいと思います。標準のLinux権限は「書き込み」権限と「修正」権限を区別しないため、これを直接行うことはできません。
SFTPサーバー構成では、SFTP root権限とumaskオプションを組み合わせてこれを機能させることができました。
権限:
drwxr-xr-x root root /sftproot
drwxrwxr-x root sftpgroup /sftproot/upload_directory
/etc/ssh/sshd_config:
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /sftproot
ForceCommand internal-sftp -d /upload_directory -u 0222
-u 0222
スイッチに注意してください。これは以下に適用されます。マスク新しく作成されたファイルに対しては、特定の権限が削除されます。
結果:
sftponlyグループのユーザーが新しいファイルをアップロードすると、ディレクトリへのグループ書き込み権限のために新しいファイルをアップロードできます。その後、umaskオプションは "w"ビットをクリアしてファイルを変更できないようにします。ファイルは次のように表示されます。
-r--r--r-- {user} sftponly /sftproot/upload_directory/filename
すごい!これがまさに私が望むものです。
質問:
ユーザーはまた、私が望むディレクトリを作成することができます。ただし、新しく作成されたディレクトリには「w」ビットもクリアされており、新しいファイルはここに書き込まれません。
質問:
SFTPで作成されたディレクトリは書き込み可能ですが、ファイルは読み取り専用に保つ方法は何ですか?
奇抜なアイデアがありますか?
答え1
sftp-server (5)
マンページによると、-u umask
コマンドラインオプションを使用してユーザーのumaskをオーバーライドできます。
-u umask
Sets an explicit umask(2) to be applied to newly-created files and directories, instead of
the user's default mask.
したがって、ユーザーが書き込み権限を持たないようにumaskをこのように設定します。
これを設定するには、sshd_config(5)
次のマンページを参照してくださいsftp-server
。
Command-line flags to sftp-server should be specified in the Subsystem declaration. See
sshd_config(5) for more information.