一、虚拟用户验证实验(待验证):
### --- 建立FTP的虚拟用户的用户数据库文件(在/etc/vsftpd)
[root@server21 ~]# vim /etc/vsftpd/vsftpd.user
a1 // 注:该文件名可以随时定义,文件内容格式,奇数行用户,偶数行密码
123456
a2
123456
a3
123456
~~~ 配置数据库登录验证的数据库文件
[root@server21 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd.user /etc/vsftpd/vsftpd.db //-T:将普通文件转换为数据库文件,-t:使用什么加密类型,-f:指定要转换的原文件
[root@server21 ~]# ll /etc/vsftpd/ // 将用户密码的存放文本转化为数据库类型,并使用hash加密
-rw-r--r-- 1 root root 12288 Feb 4 11:01 vsftpd.db
~~~ 修改文件权限为600,保证其安全性
[root@server21 ~]# chmod 600 /etc/vsftpd/vsftpd.db
### --- 创建FTP虚拟用户的映射用户,并制定其用户家目录
~~~ 创建virtual用户作为ftp的虚拟用户的映射用户
~~~ 不需要设置密码,只需要virtual为用户提供一个家目录
[root@server21 ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
### --- 建立支持迅疾用户的PAM认证文件,添加虚拟用户支持
~~~ 使用模板生成自己的认证配置文件,方便一会调用
[root@server21 ~]# cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
~~~ 编辑新生成的文件,vsftpd.pam(清空原来内容,添加下列两行)
[root@server21 ~]# vim /etc/pam.d/vsftpd.pam
auth required pam_userdb.so db=/etc/vsftpd/vsftpd // db已经声明了调用数据库文件,所以vsftpd不需要加后缀
account required pam_userad.so db=/etc/vsftpd/vsftpd
~~~ 在vsftpd.conf文件中添加支持配置
~~~ 修改:
[root@server21 ~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.pam
~~~ 添加:
guest_enable=YES // 开启匿名用户
guest_username=virtual // 匿名用户的隐射用户是谁
user_config_dir=/etc/vsftpd/dir // 匿名用户的配置目录在哪里
~~~ 提前创建dir目录
[root@server21 ~]# mkdir /etc/vsftpd/dir
### --- 为虚拟用户创建独立的配置文件,启动服务并测试
~~~ 注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉
[root@server21 ~]# vim /etc/vsftpd/vsftpd.conf // 注释如下内容
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES
~~~ 用户a1可以上传:
[root@server21 ~]# vim /etc/vsftpd/dir/a1
anon_upload_enable=YES // 允许上传文件
~~~ 用户a2可以创建目录或文件
[root@server21 ~]# vim /etc/vsftpd/dir/a2
anon_mkdir_write_enable=YES // 允许创建目录
~~~ 用户a3可以修改文件名:
[root@server21 ~]# vim /etc/vsftpd/dir/a3
anon_upload_enable=YES // 允许上传文件(为了覆盖开启的)
anon_other_write_enable=YES // 允许重名和删除文件/覆盖
~~~ 注:给映射用户的家目录设置o+r让虚拟用户有读权限
[root@server21 ~]# chmod o+r /var/ftproot/
~~~ 重启服务
[root@server21 ~]# service vsftpd restart
### --- 客户端测试
[root@server22 ~]# ftp 20.20.20.21
Name (20.20.20.21:root): a1
Password:123456
[root@server22 ~]# ftp 20.20.20.21
Name (20.20.20.21:root): a2
Password:123456
[root@server22 ~]# ftp 20.20.20.21
Name (20.20.20.21:root): a3
Password:123456