说明:此文件默认是定义的是/etc/vsftpd/ftpusers这个文件中的用户是拒绝登录ftp系统的,若我们需要/etc/vsftpd/ftpuser里的用户允许登录ftp系统,我们只需要改动/etc/pam.d/vsftpd即可,把sense=deny改成sense=allow即可。
是否启用控制用户登录的列表文件
userlist_enable=YES 默认有此设置
userlist_deny=YES(默认值) 黑名单,不提示口令,NO为白名单
userlist_file=/etc/vsftpd/users_list 此为默认值
[root@test ~]#cat /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
[root@test ~]#
说明:此文件注释告诉我们如果userlist_deny=NO 那么ftp系统只允许此文件中的用户登录系统;如果userlist_deny=YES 且此选项默认是yes选项,那么此文件中的用户是不允许登录到ftp系统的,况且不会给输入密码的机会。这也就是为什么root用户登录系统,没有输入密码的机会就提示权限决绝,不光是root,像bin,daemon这些用户也是一样的,总之在这个文件中的用户都不会提示输入口令。假如我们想要让root用户登录到ftp系统里,怎么配置呢?首先我们要把此文件的root用户删除。删除了此文件中的root用户,我们用root登录就会有输入密码的提示
[root@test ~]#cat /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
[root@test ~]#ftp 192.168.0.99
Connected to 192.168.0.99 (192.168.0.99).
220 (vsFTPd 3.0.2)
Name (192.168.0.99:root): root
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.
[root@test ~]#sed -i 's@root@#root@' /etc/vsftpd/user_list
[root@test ~]#cat /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
#root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
[root@test ~]#ftp 192.168.0.99
Connected to 192.168.0.99 (192.168.0.99).
220 (vsFTPd 3.0.2)
Name (192.168.0.99:root): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> bye
221 Goodbye.
[root@test ~]#
说明:我们可以看到我们把root从/etc/vsftpd/user_list文件中注释掉,root用户登录FTP系统就可以输入密码了,但是我们输入正确的口令为什么还是不能登录呢?其实/etc/vsftpd/user_list文件中告诉我们了,说默认vsftpd pam会检查配置文件/etc/vsftpd/ftpusers中的用户,也就说系统用户要想登录FTP系统,必须满足/etc/vsftpd/user_list中没有此用户的同时,pam检查/etc/vsftpd/ftpusers文件此用户通过,如果/etc/pam.d/vsftpd配置文件中指定/etc/vsftpd/ftpusers中的用户拒绝登录到ftp系统,那么此用户也必须满足ftpusers中没有此用户。如果/etc/pam.d/vsftpd配置文件中指定/etc/vsftpd/ftpusers中的用户允许登录到ftp系统,则此用户只需要满足不存在/etc/vsftpd/user_list即可,当然默认情况两个配置文件中都没有的用户是可以登录系统的。
[root@test ~]#cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
[root@test ~]#sed -i 's@root@#root@' /etc/vsftpd/ftpusers
[root@test ~]#cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
#root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
[root@test ~]#ftp 192.168.0.99
Connected to 192.168.0.99 (192.168.0.99).
220 (vsFTPd 3.0.2)
Name (192.168.0.99:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,99,66,75).
150 Here comes the directory listing.
drwxr-xr-x 5 0 0 190 Dec 27 04:26 bak
226 Directory send OK.
ftp> bye
221 Goodbye.
[root@test ~]#