vsftpd服务器链接出错

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列表文件相关的错误。下面为你详细分析可能的原因和解决办法:

错误原因剖析

  1. 配置文件缺失:FTP服务器尝试读取/etc/vsftpd.chroot_list文件,然而该文件并不存在。
  2. 路径有误:也许配置里指定的路径不正确,和实际文件路径不相符。
  3. 权限问题:就算文件存在,FTP服务进程可能没有读取该文件的权限。
  4. 配置冲突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服务器。