chroot_list_file 指定限制的用户文件路径,文件中一行表示一个用户
local_root 配置ftp用户的主目录
chroot_local_user和 chroot_list_enable
chroot_local_user 控制指定用户是否可以跳出到主目录之外
NO(默认)表示所有的用户不受限
YES 表示所有的用户受限
一般与chroot_list_enable
chroot_list_enable 是在chroot_local_user设置上的例外!
可以有四种状态
a、chroot_local_user 为NO时 chroot_list_enable 为YES 表示chroot_list_file中存在的用户不可跳出主目录,其他用户可以跳出主目录
b、chroot_local_user 为NO时 chroot_list_enable 为NO表示chroot_list_file中存在的用户可以跳出主目录,其他用户不可以跳出主目录
c、chroot_local_user 为YES 时 chroot_list_enable 为YES 表示chroot_list_file中存在的用户可以跳出主目录,其他用户不可以跳出主目录
d、chroot_local_user 为YES 时 chroot_list_enable 为NO表示chroot_list_file中存在的用户不可跳出主目录,其他用户可以跳出主目录
总结:两者值相同时表示chroot_list_file中存在的用户可以跳出主目录,其他用户不可以跳出主目录。两者值不同时表示chroot_list_file中存在的用户不可跳出主目录,其他用户可以跳出主目录
userlist_enable和userlist_deny
两者可以配合控制user_list文件(文件位置:/var/vsftpd/user_list)
userlist_enable 是控制可登录的用户
userlist_deny 默认NO
userlist_enable 也是要和userlist_deny 配合使用的
当userlist_deny 和 userlist_enable都为YES或都为NO时表user_list文件中的用户可以登录(白名单),反之(两者的值不相同)表示user_list文件中的用户不可以登录(黑名单)
/var/vsftpd/ftpusers 这个文件是(黑名单,不受配置文件控制)只要是用来控制系统中权限大的用户如:root、ftp等
基本配置如下
anonymous_enable=NO #匿名用户不可登录
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=NO
local_root=/var/www/html/
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES #设置用户可以增删改
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=NO
userlist_deny=NO
tcp_wrappers=YES
重启服务后,登录还是提示
登录失败: 530 Login incorrect.
感觉这是个坑!!!!
这时可以尝试修改/etc/pam.d/vsftpd文件
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vim /etc/pam.d/vsftpd
将
auth required pam_shells.so
这一行注释
#auth required pam_shells.so
重启服务
systemctl retstart vsftpd
再次尝试登录发现可以正常登录了