在配置虚拟用户需要,生成一个数据库文件 使用命令db_load;因此yum -y install db4_utils安装。

一、安装vsftpd

yum -y install vsftpd* yum -y install pam* yum -y install db4*

二、系统帐户创建

useradd vsftpd -s /sbin/nologin

三、centos vsftpd.conf设置

1.vsftpd.conf

[root@twin13024 vsftpd]# cat /etc/vsftpd/vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vftpuser
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
use_localtime=YES
pasv_min_port=60000
pasv_max_port=60030

2.访问用户frank的用户配置


[root@twin13024 vsftpd]# cat /etc/vsftpd_user_conf/frank
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftp/frank

3.访问用户列表的配置文件:(用户名和密码)

[root@twin13024 vsftpd]# cat /etc/vsftpd/vftpuser.txt
frank
q1W@E#R$T%


4.pam模块来控制虚拟用户的登录

[root@twin13024 vsftpd]# cat /etc/pam.d/vsftpd
##%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     system-auth
#account    include     system-auth
#session    include     system-auth
#session    required     pam_loginuid.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

5.虚拟用户 添加脚本 addusr.sh

[root@twin13024 vsftpd]# cat addusr.sh
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
cp /etc/vsftpd_user_conf/frank /etc/vsftpd_user_conf/$1
sed -i "s/frank/$1/g" /etc/vsftpd_user_conf/$1
mkdir /data/ftp/$1
chown vftpuser:vftpuser /data/ftp/$1


6.添加用户thunder案例

[root@twin13024 vsftpd]# cat /etc/vsftpd/vftpuser.txt
thunder
q1W@E#R$T%
[root@twin13024 vsftpd]# /etc/vsftpd/addusr.sh thunder


7.补充:

关键步骤:
-A RH-Firewall-1-INPUT  -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 60000:60030 -j ACCEPT