需求:搭建一个ftp,给予一个账号,仅对一个backup目录存在权限
注意配置文件里 #注释必须顶头写,下面这种写法有问题
local_root=/home/www/backup #虚拟用户主目录,用户和组必须指定为宿主用户
1.安装vstpd
yum install vsftpd -y
2.安装libdb-utils
安装Berkeley DB工具,用于生成虚拟用户认证文件
yum install libdb-utils #Centos7
yum install db4 db4-utils #Centos6
3.创建属主用户
所有虚拟用户都是映射属主用户的目录权限,由于虚拟用户家目录需求为backup,该目录权限为www,因此使用www用户。
4.修改主配置文件(vim /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
直接替换配置文件内容
listen=YES
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=www
user_config_dir=/etc/vsftpd/vuser_conf
pam_service_name=vsftpd
local_enable=YES
5.创建chroot文件
touch /etc/vsftpd/chroot_list
6.创建虚拟用户列表
echo -e "ftpuser\n123456" > /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\n\
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
12.开机启动vsftpd
chkconfig vsftpd on