SFTP:新しいファイルを作成できますが、変更することはできません。新しいディレクトリを使用してこれをどのように実行しますか?

SFTP:新しいファイルを作成できますが、変更することはできません。新しいディレクトリを使用してこれをどのように実行しますか?

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.

関連情報