OOPS:无法读取用户列表文件:/etc/vsftpd.user_list 使用 MySQL 作为用户后端的 VSFTP 错误

OOPS:无法读取用户列表文件:/etc/vsftpd.user_list 使用 MySQL 作为用户后端的 VSFTP 错误

我想在 Ubuntu 22.04.4 中设置一个 VSFTP 服务器,并使用 MySQL 作为后端来存储用户。

我用过本指南进行设置(它适用于 CentOS,但除了上面的部分之外,pam_mysql.so它适用于 Ubuntu)。

这是我的设置:

  • /etc/vsftpd.conf
anonymous_enable=NO
pasv_addr_resolve=YES
pasv_address=ftp.company.com
pasv_min_port=40000
pasv_max_port=41000

local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES

nopriv_user=vsftpd
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
#user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
pasv_enable=YES
  • /etc/pam.d/vsftpd
#%PAM-1.0
session       optional        pam_keyinit.so       force revoke
auth required pam_mysql.so user=vsftpd passwd=mypassword  host=localhost db=vsftpd table=accounts usercolumn=username   passwdcolumn=pass crypt=3
account required pam_mysql.so user=vsftpd passwd=mypassword host=localhost db=vsftpd table=accounts usercolumn=username  passwdcolumn=pass crypt=3
  • MySQL 账户表
mysql> select * from accounts;
+----+-----------------------------------+----------------------------------+
| id | username                          | pass                             |
+----+-----------------------------------+----------------------------------+
|  1 | [email protected]                  | [passwordhash]                   |
+----+-----------------------------------+----------------------------------+
1 row in set (0.00 sec)

在 virtualbox 中的本地测试服务器上一切正常,但是当我在生产服务器上使用相同的配置时,使用 winSCP 连接到 FTP 服务器时出现此错误:

OOPS: cannot read user list file:/etc/vsftpd.user_list

因此显然 vsftp 没有使用 mysql 连接来检索用户,而是正在寻找缺失的用户列表文件。

到目前为止我已经检查了以下内容:

  • 已验证libpam-mysql并安装 mysql-client
  • 确保我能够使用 vsftpd 凭据连接到 mysql db
  • 禁用 iptables,这样就不会干扰与数据库的连接

但到目前为止我还没能解决这个问题。令人沮丧的是,它在我的 VirtualBox 实例上运行正常,但我看不出这个实例和生产实例之间有什么区别。

请问我该如何排除vsftpd&之间的连接故障?MySQL

我的生产环境:

  • Ubuntu 22.04.4
  • MySQL 8.0.36
  • vsftpd 3.0.5
  • iptables v1.8.7

相关内容