我有一个服务器设置,其中有多个站点使用nginx运行
/var/www/site1.com
/var/www/site2.com
我想创建chroot用户,所以我创建了一个组和用户
addgroup sftpgroup
adduser sftpuser1 -G stfpgroup
在我的sshd_config中我更新了:
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /home
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
我可以通过sftp连接sftpuser1并查看主目录,现在我希望用户可以访问网站上的
文件夹/var/www/site1.com
所以我通过sftp连接sftpuser1并创建了一个文件夹/home/sftpuser1/sit1.com,与root登录我创建了mount:
mount --bind /var/www/sit1.com /home/sftpuser1/sit1.com
现在,当我使用sftp的stfpuser1登录文件夹' /home/sftpuser1/sit1.com'已经消失了 但是当我使用root登录时,我可以在用户的目录中看到该文件夹并显示site1.com的内容。
我检查了文件夹权限已更改为root:root,我知道sftpuser1:sftpuser1但仍然没有文件夹出现。
当我卸载文件夹时,它再次访问stfpuser1。
答案 0 :(得分:0)
如果/ var / www /的所有者是root用户而其他人没有权限从中读取内容,则其中的所有目录都不会对他们可见。
答案 1 :(得分:0)
我能够这样做,以下是在sshd_config中执行的步骤:
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
比我创建用户:
useradd -g sftpgroup -d /var/www/site1.com site1user
此时我确保/var/www/site1.com归root
所有chown root:root /var/www/site1.com
比我创建了另一个用户可以编写的目录
mkdir /var/www/site1.com/http_docs
我将权限更改为用户:
chown site1user:sftpgroup /var/www/site1.com/http_docs
比我设置用户密码:
passwd site1user
所有人似乎都应该工作。