web-dev-qa-db-ja.com

ssh / sftpファイルのup- / downloadを許可しますが、既存のファイルの変更は許可しません

私は、nginxを介して提供される一種のファイルダンプを提供するLinuxMintマシンを持っています。

私の問題は、1人のユーザー(upload_usr)が1つの特定のフォルダー内に新しいファイル/ディレクトリを配置できるはずですが、既存のファイルを置き換えたり変更したりすることは許可されるべきではないということです。

これは次のように機能するはずです。

  • a.txtを入れて->罰金
  • a.txtを置く->許可しない
  • cata.txt->罰金
  • b.txtを置く->罰金
  • rma.txt->禁止

重要なのは、rootではない他のユーザーがこのディレクトリでr/wできる必要があるということです。

これを達成するための最も簡単な方法は何でしょうか?

2
Snapstromegon

(sftp-serverでopensshを想定しています。)

SSHを許可する場合、これはほぼ不可能です。ただし、SFTPのみを許可する場合:

1つの特定のフォルダ内に新しいファイル/ディレクトリを配置できる必要があります

ChrootDirectoryを使用します

その他の要件については、-P blacklisted_requestsおよび-u umaskで十分です。 (/usr/lib/openssh/sftp-server -Q requestsを実行すると、リクエストの種類を確認できます。)

a.txtを入れて->罰金

allow write(デフォルトで許可)

a.txtを置く->許可しない

-u 0222を指定してsftp-serverを実行し、setstatfsetstatを許可しないでください。

cata.txt->罰金

allow read(デフォルトで許可)

b.txtを置く->罰金

allow write(デフォルトで許可)

rma.txt->禁止

remove(およびrmdir?)を禁止します

TLDRユーザーをChrootDirectoryで制限し、sftp-server-u 0222 -P remove,rmdir,setstat,fsetstatで実行します

1
Mark Wagner