我尝试了好久才让它发挥作用,但无济于事。
我在 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
。