1、网上主流的回答都是修改/etc/user_list或/etc/vsftpd/user_list文件,把root用户加#号注释。还有/etc/ftpusers或/etc/vsftpd/ftpusers文件,把root用户加#号注释。(我用了,没有解决问题)
2、一些机子是使用的是CentOS运行的vsftpd,你需要在/etc/shells文件中,添加一个信息,在文件的最后加入/sbin/nologin。(我linux系统上,没有解决问题)
3、我的linux上只有一个vsftpd的服务和一个/etc/vsftpd.conf文件。我遇到这个问题,是因为我一直是使用root用户去登录FTP的,经过排查,你需要的是使用/etc/passwd里面的用户来登录。
cat /etc/passwd
我们再查看一下/etc/shells文件
cat /etc/shells
对比发现root用户的最后是/bin/sh,需要修改为/etc/shells来做为登录的shell。修改后为
给root账户设置一个密码, 例如:密码为root123
passwd root
重启vsftpd服务
killall vsftpd
vsftpd &
最后附加上我的/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
pam_service_name=vsftpd
登录设置