Ssh

允許 ssh/sftp 文件上傳/下載,但不允許更改現有文件

  • April 10, 2019

我有一台 linux mint 機器,它提供了一種通過 nginx 提供的文件轉儲。

我的問題是,單個使用者(upload_usr)應該能夠將新文件/目錄放在一個特定文件夾中,但不應允許他替換或更改任何現有文件。

這應該像這樣工作:

  • 把 a.txt -> 好
  • 把 a.txt -> 禁止
  • cat a.txt -> 很好
  • 把 b.txt -> 很好
  • rm a.txt -> 禁止

重要的是,不是 root 的其他使用者需要能夠在此目錄中讀/寫。

實現這一目標的最簡單方法是什麼?

(假設 openssh 帶有 sftp-server。)

如果您允許 SSH,那麼這幾乎是不可能的。但是,如果您只允許 SFTP:

應該能夠將新文件/目錄放在一個特定文件夾中

採用ChrootDirectory

對於其他要求-P blacklisted_requests-u umask應該足夠了。(您可以通過執行查看請求類型/usr/lib/openssh/sftp-server -Q requests。)

把 a.txt -> 好

允許write(預設允許)

把 a.txt -> 禁止

執行 sftp-server-u 0222並禁止和setstat fsetstat.

cat a.txt -> 很好

允許read(預設允許)

把 b.txt -> 很好

允許write(預設允許)

rm a.txt -> 禁止

禁止remove(和rmdir?)

TLDR 限制使用者並ChrootDirectory執行sftp-server``-u 0222 -P remove,rmdir,setstat,fsetstat

引用自:https://serverfault.com/questions/962450