需求:搭建一个ftp,给予一个虚拟用户,仅对一个目录存在权限
1.安装vstpd
yum install vsftpd -y
2.安装libdb-utils
安装Berkeley DB工具,用于生成虚拟用户认证文件
yum install libdb-utils #Centos7 yum install db4 db4-utils #Centos6
3.创建属主用户
所有虚拟用户都是映射属主用户的目录权限。
4.修改主配置文件(/etc/vsftpd/vsftpd.conf)
listen=YES #使用ipv4进行监听 anonymous_enable=NO #关闭匿名访问 dirmessage_enable=YES xferlog_enable=YES #启动日志 xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES chroot_list_enable=YES #限制用户不能离开特定目录 chroot_list_file=/etc/vsftpd/chroot_list chroot_local_user=YES guest_enable=YES #启动后,所有非匿名用户将映射到guest_username进行访问,并且转换成一个虚拟用户 guest_username=www user_config_dir=/etc/vsftpd/vuser_conf #虚拟用户配置文件目录 pam_service_name=vsftpd #pam认证文件名称 local_enable=YES #启用本地系统用户,包括虚拟用户 connect_from_port_20=NO #关闭ftp-data端口,相当于不使用主动模式 pasv_enable=YES pasv_min_port=33000 pasv_max_port=34000
5.创建chroot文件
touch /etc/vsftpd/chroot_list
6.创建虚拟用户列表
echo -e "ftpuser 123456" > /etc/vsftpd/vuser
7.生成虚拟用户认证文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db chmod 600 /etc/vsftpd/vuser.db
8.配置虚拟用户认证
cp /etc/pam.d/vsftpd{,.bak} echo -e "auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser" > /etc/pam.d/vsftpd
9.配置虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/ vi /etc/vsftpd/vuser_conf/ftpuser #文件名与对应FTP虚拟用户一致 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/www/backup #虚拟用户主目录,用户和组必须指定为宿主用户 anon_umask=020
10.配置防火墙和selinux
setsebool -P ftpd_full_access on iptables -I INPUT -p tcp --dport 21 -j ACCEPT #FTP连接端口 iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT #pasv模式下的随机端口 iptables-save >/etc/sysconfig/iptables #保存防火墙配置
11.重启vsftpd
service vsftpd restart
注意:所有配置文件不能出现中文注释。