在VSFTP中,虚拟用户认证使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。使用这种方式只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源,由此来提高系统的安全性。并且配置更加灵活。
下面介绍配置过程。注意防火墙和selinx
1.生成虚拟用户口令文件。
# vim /etc/vsftpd/login.txt
ftpu1#用户名
1234#密码
ftpu2
qwer
ftpu3
5678
2.生成口令库文件,并修改其权限:
# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db # chmod 600 /etc/vsftpd/vsftpd_login.db
3.编辑虚拟用户的PAM文件。清空并添加以下内容:
# > /etc/pam.d/vsftpd # vim /etc/pam.d/vsftpd
32位系统:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
64位系统:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
说明:/etc/vsftpd/vsftpd_login文件为第2部中生成的虚拟用户的db文件,不可加.db。
4.建立虚拟用户(www),不允许登录系统
# useradd -M -s /sbin/nologin www
5.编辑vsftpd配置文件
# /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允许匿名访问
local_enable=YES #本地用户可以访问,如果为NO 则所有虚拟用户都将不能访问,因为虚拟用户的访问在主机上其实是以本地用户访问的
local_umask=022
xferlog_enable=YES#开启日志
xferlog_file=/var/log/vsftpd.log#日志保存路径
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
one_process_model=NO
chroot_local_user=YES#限定用户不可立刻家目录
ftpd_banner=Welcom to lst FTP_server.
anon_world_readable_only=NO
guest_enable=YES#开启虚拟用户功能
guest_username=www#指定虚拟用户的宿主内置用户
pam_service_name=vsftpd #指定pam认证文件名,第3部中的/etc/pam.d/vsftpd
user_config_dir=/etc/vsftpd/vuser.conf.d #虚拟用户独立配置文件
6.创建每个虚拟用户的独立配置文件。
# mkdir /etc/vsftpd/vuser.conf.d # vim /etc/vsftpd/vuser.conf.d/ftpu1
local_root=/www/ftpsite/ftpu1 #虚拟用户ftpu1的根目录
anon_world_readable_only=NO
anon_umask=022
write_enable=YES #可写权限
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
7.创建虚拟用户的家目录,并赋予权限
# mkdir /www/ftpsite/ftpu1 # cd /www/ftpsite/ # chown -R www.www /ftpu1/ #设置文件所有者.所有者为本地用户www # chmod 700 /www/ftpsite/ftpu1
8.重新启动VSFTP:
# service vsftpd restart
9.本地测试
# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 Welcom to my FTP server.
Name (127.0.0.1:root): ftpu1#使用虚拟用户ftpu1登录
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
10.添加FTP用户的步骤
1.在/etc/vsftpd/login.txt中添加用户名和密码
2.更新口令库文件
# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
3.创建虚拟用户的独立配置文件,文件名与虚拟用户名相同
# vim /etc/vsftpd/vuser.conf.d/ftpuN
4.为新用户新建家目录并修改权限