构建基于虚拟用户的vsftpd服务器
1.建立虚拟FTP用户的帐号数据库文件
(1) 建立虚拟用户的账户名、密码列表->奇数行为帐号名,偶数行为上一行中帐号的密码
(2) 转化为Berkeley db格式的数据文件->db_load工具,需安装db4-utils-4.7.25-17.el6.x86_64
软件包
[[email protected] vsftpd]# vi vuser.list
test1
aixocm
test2
aixocm
[[email protected] vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[[email protected] vsftpd]# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[[email protected] vsftpd]# chmod 600 vuser.*
2. 创建FTP根目录及虚拟用户映射的系统用户
[[email protected] ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[[email protected] ~]# chmod 755 /var/ftproot
3. 建立支持虚拟用户的PAM认证文件,PAM:支持热拔插模块,vsftpd.vu文件即对应vsftpd.conf文件中pam_service _name=vsftpd.vu
[[email protected] ~]# cat /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
4. 在vsftpd.conf文件中添加支持配置
[[email protected] ~]# egrep -v "^$|^#" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vh
在客户端以虚拟用户登录后发现不能进行创建、删除,可以通过添加下面语句实现
[[email protected] ~]# echo "virtual_use_local_privs=YES" >>/etc/vsftpd/vsftpd.conf
5.为个别虚拟用户创建独立的配置文件(可选)
6. 重新加载VSFTPD配置
[[email protected] ~]# service vsftpd restart
7. 使用虚拟FTP帐户访问测试
[[email protected] ~]# lftp 10.0.252.145 -u test1,aixocm
lftp [email protected]:~> mkdir aa
mkdir 成功, 建立 `aa‘
lftp [email protected]:~> rm -rf aa
rm 成功, 删除 `aa‘