我正在 Red Hat 6.9 上构建 SFTP 服务器(明确地说,我正在使用 OpenSSH 的 FTP 扩展)。我遵循以下指南:
https://www.howtoforge.com/tutorial/how-to-setup-an-sftp-server-on-centos/
我完全按照描述配置一切。我使用的客户端操作系统是 Windows 10。我已经使用 Putty 的 SFTP 客户端和 WinSCP 进行了测试(我不认为我的问题与客户端有关)。当我尝试连接时,系统会提示我输入用户名,然后输入密码。输入密码后,会话立即关闭。/var/log/secure 显示以下相关信息:
Aug 2 14:30:28 SFTP_Server sshd[4087]: pam_unix(sshd:session): session opened for user scott.ftp by (uid=0)
Aug 2 14:30:28 SFTP_Server sshd[4089]: fatal: bad ownership or modes for chroot directory "/sftp/scott.ftp/data"
Aug 2 14:30:28 SFTP_Server sshd[4087]: pam_unix(sshd:session): session closed for user scott.ftp
显示目录权限与教程相符:
[root@SFTP_Server data]# ls -alh / | grep sftp
drwxr-xr-x 4 root root 4.0K Aug 2 12:37 sftp
[root@SFTP_Server data]# ls -alh /sftp
total 16K
drwxr-xr-x 4 root root 4.0K Aug 2 12:37 .
dr-xr-xr-x. 25 root root 4.0K Aug 2 12:35 ..
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 scott.ftp
[root@SFTP_Server data]# ls -alh /sftp/scott.ftp/
total 12K
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 .
drwxr-xr-x 4 root root 4.0K Aug 2 12:37 ..
drwxrwx--- 2 scott.ftp sftpusers 4.0K Aug 2 12:38 data
[root@SFTP_Server data]# ls -alh /sftp/scott.ftp/data/
total 8.0K
drwxrwx--- 2 scott.ftp sftpusers 4.0K Aug 2 12:38 .
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 ..
我不确定是什么让我有了这个想法,但为了进行故障排除,我更改了“。”目录的权限:
[root@SFTP_Server data]# pwd
/sftp/scott.ftp/data
[root@SFTP_Server data]# chown root:root .
[root@SFTP_Server data]# ls -alh
total 8.0K
drwxrwx--- 2 root root 4.0K Aug 2 12:38 .
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 ..
现在我尝试再次连接,并且可以成功连接。但我无法列出目录或创建目录或执行任何其他操作。我在这里收到的错误是“权限被拒绝”。虽然仍然通过 SFTP 连接,但在备用 SSH 连接中,我将权限改回:
[root@SFTP_Server data]# chown scott.ftp:sftpusers .
[root@SFTP_Server data]# ls -alh
total 8.0K
drwxrwx--- 2 scott.ftp sftpusers 4.0K Aug 2 12:38 .
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 ..
现在我可以在 SFTP 会话中创建目录和执行其他操作。我退出 SFTP 会话并尝试连接,但登录失败,如上所述。
任何帮助是极大的赞赏。
答案1
现在我尝试再次连接,可以成功连接。但我无法列出目录或创建目录或执行任何其他操作。我在这里收到的错误是“权限被拒绝”。
从技术上来说,创建一个可由chroot
连接用户写入的文件是不可能的(除非您使用扩展 ACL,但在这种情况下这不是一个好的做法,因为出于安全原因它是被禁止的)。
一般建议是
- chroot 到上一级目录
- 在 中创建另一个目录
data/
,该目录可由该用户写入。