chroot 目录“/var/www”的所有权或模式错误

chroot 目录“/var/www”的所有权或模式错误

auth.log当我尝试使用 SFTP 连接到站点时出现以下错误。

致命:chroot 目录“/var/www”的所有权或模式错误

ls -ld该目录显示以下内容:

drwxrwxr-x 4 root sftponly 4096 8月 12 04:05 /var/www/

如您所见,我已授予组完全权限sftponly。我通过其连接到 SFTP 的用户是mysftpuser该组的一部分sftponly

如果我执行以下操作,那么我可以连接但不能重命名,编辑,删除,覆盖里面的任何文件或文件夹www

sudo chmod 755 /var/www/

这是我的sshd_config设置

匹配组 sftponly
ChrootDirectory /var/www
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

简而言之sudo chmod 755 /var/www/允许我连接,但只能以只读模式连接。sudo chmod 775 /var/www/甚至不允许我连接。

如何解决这个问题?

答案1

这是您需要的命令:

usermod -d /var/www/ sftponly
usermod -s /sbin/nologin sftponly
usermod -s /bin/false sftponly

此后,向任何用户授予任何文件夹权限的最佳方式是 ACL:

setfacl -Rm "u:sftponly:rwx" /var/www/
setfacl -Rdm "u:sftponly:rwx" /var/www/

答案2

听起来您的权限对于 SFTP 来说太宽松了。您需要为用户创建一个文件夹,并让他以 0700 权限或更严格的权限访问该文件夹。

有关详细信息,请参阅此问题的答案 服务器故障问题

相关内容