无法使用 MariaDB 正确设置 vsftpd

无法使用 MariaDB 正确设置 vsftpd

目标

我的目标是安装一个 FTP 服务器(vsftpd),以便我可以向我的 MariaDB 添加用户/密码进行验证。

我一直在使用这个指南: https://www.howtoforge.com/virtual-hosting-with-vsftpd-and-mysql-on-debian-squeeze 以及其他一些人尝试解决我的问题。

问题

在尝试使用 FileZilla 进行连接时,它显示ECONNREFUSED' Connection refused by server我的服务器似乎根本没有接受连接。

我安装的软件包有:vsftpd、、libpam-mysqlMariaDB

如果我只是丢失了一个包裹,请也告诉我,因为这可能是一个简单的修复!

玛拉雅数据库

我的 MariaDB 绝对设置正确,因为我可以查询其他应用程序。我确实有一个名为 vsftpd 的数据库、名为 accounts 的表以及包含两个示例用户的 id、用户名、密码列。

我确实运行了以下命令来授予 vsftpd 权限:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

我保留密码为 ftpdpass 只是为了尝试让事情运行,但如果我真的可以正确安装它,我会稍后返回并更改它。

vsftpd

/etc/vsftpd.conf的如下:

listen=YES
anonymous_enable=NO
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
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
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_user_conf

libpam-mysql

/etc/pam.d/vsftpd的如下:

auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

如下所述,我暂时将密码保留为 ftpdpass,直到我找到可行的解决方案

额外的

完成所有这些操作后,我确实重新启动了 vsftpd,但仍然收到拒绝连接的情况。也许更有经验的用户有办法让我检查哪里出了问题?请务必询问我是否需要提供更多信息。非常感谢所有帮助!

另请注意,如果有任何区别,这是在运行 Raspbian / Debian 7 的 Raspberry Pi 上运行的。我刚刚进行了全新安装。

答案1

我设法解决了这个问题。对于将来看到这个问题的人来说,有一件事要注意。如果你想看看 vsftpd 是否真的在运行和监听,请运行以下命令:

netstat -tlpm

您应该vsftpd在列表中看到正在监听端口 21!

如果没有,则说明它没有监听/运行。对我来说,这是因为我的/etc/vsftpd.conf程序出了问题。如果 vsftpd 的参数不正确(即输入错误),它根本就不会运行。无论哪种情况,我的新程序/etc/vsftpd.conf如下:

listen=YES
anonymous_enable=NO
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
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
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_user_conf
pasv_enable=YES
allow_writeable_chroot=YES

我遗漏的关键几行是:

pasv_enable=YES
allow_writeable_chroot=YES

这解决了我的问题,使我可以连接。

解决了不同的问题

我想将此注释添加到遇到同样问题的其他人中。成功连接后,我希望我的用户能够编辑他们的主文件夹。为了做到这一点,我添加新用户的流程如下:

  1. 将用户名、密码插入我的数据库:INSERT INTO accounts (username,pass) VALUES('newuser',PASSWORD('password'));

*请注意,在密码周围使用 PASSWORD() 非常重要,否则连接将无法起作用!

  1. 为用户创建新目录并确保 vsftpd 拥有该目录的所有权

    mkdir /home/vsftpd/newuser

    chown -R vsftpd /home/vsftpd

    chmod -R u+rX /home/vsftpd

  2. 现在以新用户身份连接即可工作,并具有对主目录的写/读访问权限!

相关内容