SFTP 用户的文件/目录权限

SFTP 用户的文件/目录权限

在我使用了 1.5 周的 Debian 6 VPS 上大量使用 SSH 之后,我想开始通过 SFTP 上传文件。我之前已经尝试过,但使用的是 root 帐户,由于安全性更改,使用 SSH 不再可行。

所以我创建了一个单独的用户,我们叫他sftp用户目前,谁属于该团体安全FTP他在 sshd_config 中得到了一个特殊条目:

Match Group sftp
    ChrootDirectory /var/www
    ForceCommand internal-sftp
    PasswordAuthentication yes

所以,他很幸运,不需要密钥文件即可连接,但他只能访问 /var/www。好吧,这样就行了,我可以完美登录并查看那里的所有文件。但由于这些文件归 root 用户所有,他无法上传任何内容,这让他变得毫无用处。

在探索文件权限的过程中,我读过很多八进制数字组合和奇怪的解决方法,但没有一个是完全合适的。如果我理解正确的话,chmod 只能用于使目录对特定用户可写(在这种情况下),组(猜猜怎么着,在本例中为 \o/) 或其他。在不破坏 PHP-FPM 和 nginx 的情况下解决这个问题的“最佳”想法是添加sftp用户组。虽然我认为这不是一个好主意,但这应该不会造成太大的破坏,因为sftp用户已 chroot 并且无法打开 shell。但无论如何这都不起作用,我无法写入那里的任何文件,甚至无法使用sftp用户在里面团体。

话虽如此,我还是需要帮助才能找到适合我目的的东西。我并不指望像我在这里写的一样有一大段文字,只是一些小提示能指引我正确的方向。

答案1

我所做的是为 sftpuser 创建一个主卷(我们称之为 /sftphome),它必须由 root 拥有并具有以下权限和所有权:

/sftphome

drwxr-xr-x    root root

然后 sftpuser 的 sftp 主目录也必须由 root 拥有:

/sftphome/sftp用户

drwxr-xr-x    root root

然后创建sftpuser可以上传下载的目录:

/sftphome/sftpuser/上传

drwx------  sftpuser sftpuser

当然要确保/sftphome已正确配置:

ChrootDirectory /sftphome

最终结果是,当 sftpuser 登录到 sftp 服务器时,该用户将被定向到/sftphome/sftp用户然后必须进入上传才能上传和下载文件。

相关内容