Chroot jail 无法与 VSFTPD 配合使用

Chroot jail 无法与 VSFTPD 配合使用

我尝试了好久才让它发挥作用,但无济于事。

我在 Arch 上运行了一个 VSFTPD 服务器。它运行良好,只是用户可以向上导航目录树并查看/下载其他用户主目录中的文件。我认为答案在于 chroot(),但我尝试的每次配置迭代都不起作用(是的,我每次都重新启动服务器)。我不确定问题出在 VSFTPD conf 还是我用来创建新用户的 shell 脚本中。如果能得到任何帮助,我将不胜感激。

以下是我的信心:

listen=YES
anonymous_enable=NO
dirmessage_enable=YES
chmod_enable=NO
log_ftp_protocol=YES
pasv_enable=YES
pasv_min_port=xxxxx
pasv_max_port=xxxxx
pasv_address=xxx.xxx.xxx.xxx
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=xxxxx xxxxx
pam_service_name=ftp
local_umask=022
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.userlist
passwd_chroot_enable=YES
local_enable=YES
write_enable=YES
force_dot_files=NO
tcp_wrappers=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist

下面是我运行的用于创建新用户的 shell 脚本:

#!/bin/sh
mkdir /home/./$1
chmod 775 /home/./$1
useradd -d /home/./$1 -s /bin/false $1
chown -R $1 /home/./$1
passwd $1
echo $1 >> /etc/vsftpd.userlist
echo "FTP user created."

答案1

我遇到了同样的问题。没有 chroot,你可以看到所有文件。当我允许 chroot 时,我无法登录我的 ftp 服务器。

我该如何解决这个问题?将其附加到配置文件中:

allow_writeable_chroot=YES

http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/

答案2

我知道这是一个老话题。在 Raspberry Pi 上使用 debian wheezy 时遇到了同样的问题,发现每次登录时sftp-server都会自动激活(通过 检查ps -ef)。

sshd_config通过将命令更改为以下内容来禁用服务器:

Subsystem sftp /bin/false

并使用 TLS 通过服务器获得正确的登录vsftp。Chroot jail 现在可以正常工作。

答案3

拥有任何指定用户“chrooted”到的目录吗?我相信这是最新版本的 VSFTPD 的要求。

如果您无法将这些文件夹的所有权更改为,然后尝试一下 proftpd。

答案4

我觉得配置没问题。事实上,我刚刚在CentOS 6.3和中测试了它vsftpd: version 2.2.2,它运行正常。用户被限制在他们的主目录中。我遇到了问题,SELINUX并通过设置 解决了它setsebool ftp_home_dir on。但是您的 shell 脚本导致了问题。在 中/etc/passwd,它将用户的主目录设置为/home/./username而不是/home/username

我的建议是首先尝试使用单行命令添加用户useradd -d /home/userftp -s /bin/false userftp,设置密码,然后将用户添加到/etc/vsftpd.userlist

相关内容