允许 ssh/sftp 上传/下载文件,但不允许更改现有文件

允许 ssh/sftp 上传/下载文件,但不允许更改现有文件

我有一台 Linux Mint 机器,它提供一种通过 nginx 提供的文件转储。

我的问题是,单个用户(upload_usr)应该能够将新文件/目录放置在一个特定文件夹中,但不允许他替换或更改任何现有文件。

它应该像这样工作:

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

重要的是,非 root 的其他用户需要能够在此目录中进行读/写。

实现这一目标最简单的方法是什么?

答案1

(假设 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 使用限制用户ChrootDirectorysftp-server运行-u 0222 -P remove,rmdir,setstat,fsetstat

相关内容