案例3:虚拟用户访问
1.创建用户进行FTP认证的用户数据文件,其中奇数行作为账户名,偶数行为密码
[root@centos7-server vsftpd]# cd /etc/vsftpd/
[root@centos7-server vsftpd]# vim vuser.list
luxingjun
centos
wangminghao
centos
yaoxiaqian
centos
2.使用db_load 命令 用hash算法将原始的明文信息,通过加密转换成数据库文件
[root@centos7-server vsftpd]# db_load -T -t hash -f vuser.list vuser.db
参数解释:
-T
选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。如果指定了选项-T,那么一定要追跟子选项-t
-t
子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。扩展介绍下,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。
-f
参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码
3.降低数据库文件的权限(避免其他人看到数据库文件的内容)
[root@centos7-server vsftpd]# chmod 600 vuser.db
4.把原始的明文信息文件删除
[root@centos7-server vsftpd]# rm -f vuser.list
5.创建一个本地用户,用来做虚拟用户在本地的代理,为了安全起见,我们需要禁止这个用户本地登录shell
[root@centos7-server vsftpd]# useradd -d /var/ftproot/ -s /sbin/nologin virtual
[root@centos7-server vsftpd]# ls -ld /var/ftproot/
drwx------. 2 virtual virtual 62 Feb 16 22:44 /var/ftproot/
[root@centos7-server vsftpd]# chmod -Rf 777 /var/ftproot/
[root@centos7-server vsftpd]# ls -ld /var/ftproot/
drwxrwxrwx. 2 virtual virtual 62 Feb 16 22:44 /var/ftproot/
6.创建一个用户虚拟用户认证的PAM文件 vsftpd.vu
[root@centos7-server vsftpd]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
7.配置文件
[root@localhost vsftpd]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
8.如果想要针对不同用户设置不同权限
[root@centos7-server vsftpd]# mkdir /etc/vsftpd/vusers_dir/
[root@centos7-server vsftpd]# cd /etc/vsftpd/vusers_dir/
[root@centos7-server vusers_dir]# touch luxingjun
[root@centos7-server vusers_dir]# touch wangminghao
[root@centos7-server vusers_dir]# touch yaoxiaqian
[root@centos7-server vusers_dir]# vi luxingjun
[root@centos7-server vusers_dir]#
[root@centos7-server vusers_dir]#
[root@centos7-server vusers_dir]# cat luxingjun
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
还需要编辑配置文件指定用户配置目录,加入以下信息
user_config_dir=/etc/vsftpd/vusers_dir
验证:
[root@centos7-client ~]# ftp 192.168.40.205
Connected to 192.168.40.205 (192.168.40.205).
220 (vsFTPd 3.0.2)
Name (192.168.40.205:root): luxingjun
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> mkdir 123
257 "/123" created
结果表明当前用户是可以来创建目录的