ERRor:
C:\Users\czliu>ftp 192.168.1.177 连接到 192.168.1.177。 220
Welcome Liu tiezhu FTP service. 200 Always in UTF8 mode.
用户(192.168.1.177:(none)): czliu 331
lease specify the password. 密码: 500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list
500 OOPS: priv_sock_get_result 远程主机关闭连接。
C:\Users\czliu>ftp 192.168.1.177 连接到 192.168.1.177。 220 Welcome Liu tiezhu FTP service. 200 Always in UTF8 mode.
Remark the follow items : Everything ia OK
chroot_local_user=YES
# 限制所有用户在其主目录内
chroot_list_enable=YES
# 启用chroot列表
chroot_list_file=/etc/vsftpd.chroot_list
# 指定列表文件路径
从你给出的错误信息来看,在尝试登录FTP服务器时出现了与chroot
列表文件相关的错误。下面为你详细分析可能的原因和解决办法:
错误原因剖析
- 配置文件缺失:FTP服务器尝试读取
/etc/vsftpd.chroot_list
文件,然而该文件并不存在。 - 路径有误:也许配置里指定的路径不正确,和实际文件路径不相符。
- 权限问题:就算文件存在,FTP服务进程可能没有读取该文件的权限。
- 配置冲突:
vsftpd
的某些配置选项之间存在矛盾,进而引发服务异常。
解决办法
1. 确认chroot_list文件是否存在
你需要在FTP服务器上执行以下命令:
ls -l /etc/vsftpd.chroot_list
- 若提示
No such file or directory
,那就表明文件不存在,你需要创建这个文件。 - 若文件存在,要检查文件权限,保证FTP服务(一般是
ftp
或者nobody
用户)有读取权限。
2. 创建或修改chroot_list文件
你可以手动创建这个文件:
sudo touch /etc/vsftpd.chroot_list
sudo chmod 644 /etc/vsftpd.chroot_list
要是你想限制某些用户只能访问自己的主目录,就在文件中逐行添加这些用户名:
echo "czliu" | sudo tee -a /etc/vsftpd.chroot_list
echo "cnliutz" | sudo tee -a /etc/vsftpd.chroot_list
3. 调整vsftpd配置
编辑/etc/vsftpd.conf
文件:
sudo vi /etc/vsftpd.conf
确保以下配置正确:
chroot_local_user=YES # 限制所有用户在其主目录内
chroot_list_enable=YES # 启用chroot列表
chroot_list_file=/etc/vsftpd.chroot_list # 指定列表文件路径
如果你希望所有用户都被限制在主目录,且不需要单独的列表文件,可以这样配置:
chroot_local_user=YES
chroot_list_enable=NO
4. 检查用户主目录权限
用户主目录的权限设置必须正确,否则会触发安全限制:
sudo chmod a-w /home/czliu # 确保用户主目录不可写
5. 重启FTP服务
配置修改完成后,重启vsftpd
服务:
sudo systemctl restart vsftpd
补充说明
- SELinux/Apache问题:要是服务器上同时运行了Apache,并且开启了SELinux,你需要执行以下命令:
sudo setsebool -P ftpd_full_access on
sudo setsebool -P ftpd_use_passive_mode on
- 日志查看:检查
/var/log/vsftpd.log
或/var/log/messages
,从中获取更详细的错误信息。
按照上述步骤操作,应该能够解决chroot_list
文件读取失败的问题,让你成功登录FTP服务器。