如何设置可以使用 SFTP 的用户,同时保留其他用户所有权

如何设置可以使用 SFTP 的用户,同时保留其他用户所有权
  • 我有一个用户“canread”,它具有只读权限,并且是目录 /www/thedir/ 中文件和子目录的所有者
  • “Canread” 永远不应具有写入权限,哪怕是一毫秒也不行(出于安全原因)
  • 我有另一个用户“canwrite”,我想使用它通过 SFTP 将文件上传和下载到目录 /www/thedir/。因此它需要对目录 /www/thedir/ 具有读写权限
  • 我想确保通过“canwrite”上传的任何文件的所有者始终是“canread”(甚至一秒钟也不会得到错误的所有者)
  • 出于安全原因,我不想将“canwrite”与“canread”归为同一组
  • 我不想在上传或下载文件后使用脚本或手动流程来更改所有权。
  • 出于安全原因,我也不想将权限更改为另一级别的目录和文件(没有临时的 777 或类似权限)

我如何以安全的方式实现这一点?

答案1

您的要求很难满足。顺便说一句,sshd 的工作方式如下 - 它以 root 身份运行,在身份验证期间,它会在 sshd 用户下生成一个进程,然后在登录的用户下生成进程。sftp-server不能将文件所有者设置为已登录用户以外的用户。

在我看来,由于您不想使用共享组,因此您只有一个选择。

  • 解决方法 - 即总是sftp-server通过sudo总是可以阅读用户。哦!是的,但诀窍是运行sftp-server -R(readonly)可以阅读用户和sudo -u canread /usr/libexec/sftp-server可以写用户。您可以使用部队指挥或者放入.ssh/authorized_keys。这样,可以阅读永远不会允许写入操作(除非存在 OpenSSH 错误)。并且可以写实际上会读取/写入以下文件/目录可以阅读允许。

我确实会重新考虑共享组和目录上 sgid 的使用。

相关内容