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 权限或更严格的权限访问该文件夹。
有关详细信息,请参阅此问题的答案 服务器故障问题