一、需求
1.只想让指定的账户能登陆ftp,其它本地账户不允许登陆ftp。
2.只想让指定的账户不限制在其主目录,其它账户都限制在其主目录。
二、让指定的账户能登陆ftp,其它本地账户不允许登陆ftp。
为验证效果我们建两个用户TOM和JIM,并且只把TOM添加到user_list列表里面,并且设置anonymous_enable=NO 拒绝匿名登录。配合使用userlist_enable 和userlist_deny ,每次更改完配置文件后都要重启服务 /etc/init.d/vsftpd restart。现在我们来进行访问测试。
1.userlist_enable=YES,userlist_deny=YES
窗口(有登录框,TOM不允许登录,JIM允许登录) 命令(tom输入用户名后被拒绝,jim允许登录)
2.userlist_enable=NO,userlist_deny=NO
窗口(TOM和JIM都允许登录) 命令(TOM和JIM都允许登录)
3.userlist_enable=YES, userlist_deny=NO
窗口(无登录框,直接拒绝) 命令(tom允许登录,jim不允许登录)
4.userlist_enable=NO,userlist_deny=YES
窗口(TOM和JIM都允许登录) 命令(TOM和JIM都允许登录)
根据以上测试,发现测试3符合我的要求。下面给出我的vsftpd的配置:
userlist_enable=YES userlist_deny=No userlist_file=/etc/vsftpd/user_list_only
user_list_only的文件内容如下:
# cat user_list_only hunk hunkzhu
经测试,只有hunk和hunkzhu可以登录ftp,其它本地账户均拒绝(输入账户名直接拒绝)。以后新增ftp账户只需将该账户加入到/etc/vsftpd/user_list_only中,确保安全,满足个人需求。
三、只想让指定的账户不限制在其主目录,其它账户都限制在其主目录。
对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
chroot_local_user=YES | chroot_local_user=NO | |
chroot_list_enable=YES | 1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 |
1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 |
chroot_list_enable=NO | 1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
根据以上测试,发现chroot_local_user=YES,chroot_list_enable=YES符合我的要求,下面给出我的vsftpd得配置:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd/nochroot_list chroot_local_user=YES
nochroot_list的文件内容如下:
# cat nochroot_list hunk
经测试,只有hunk在登陆后,不被限制在其主目录下。
四、总结
同时配置以上两种之后,该ftp服务器只有hunk和hunkzhu能登陆,而且hunkzhu被限制在其主目录下,hunk不被限制在其主目录下。