Ssh
允許 ssh/sftp 文件上傳/下載,但不允許更改現有文件
我有一台 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