centos 7.2下搭建vsftp 虚拟用户

虚拟用户搭建vsftp
要求一: 只允许上传 下载  不能删除   不能更换名称
yum install pam*
yum install db4* -y
yum install vsftpd
chkconfig vsftpd on

iptables -I INPUT -s 43.243.139.212 -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -s 43.243.139.212 -p tcp --dport 20 -j ACCEPT
iptables -I INPUT  -p tcp --dport  30000:31000  -j ACCEPT
useradd duoniu

cd   /etc/vsftpd
[root@wx14 vsftpd]# cat vsftpd.conf
allow_writeable_chroot=YES  (不能登录的话添加)
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
 
xferlog_enable=YES
xferlog_file=/etc/vsftpd/vsftpd.log
xferlog_std_format=YES
 
connect_from_port_20=YES
idle_session_timeout=600
listen=YES
 
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

pasv_min_port=30000
pasv_max_port=31000 

guest_enable=YES
guest_username=duoniu
user_config_dir=/etc/vsftpd/virtualuser_conf

[root@wx14 vsftpd]# mkdir   virtualuser_conf
[root@wx14 vsftpd]# chmod  755 virtualuser_conf
[root@wx14 virtualuser_conf]# cd /etc/vsftpd/virtualuser_conf
[root@wx14 virtualuser_conf]# cat dn 
local_root=/web/www/wx14/cms_html/html
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_umask=022    #上传文件有权限
anon_mkdir_write_enable=YES

[root@wx14 vsftpd]# cd /etc/vsftpd
[root@wx14 vsftpd]# cat virtualuser_passwd.txt
dn
m2i3sc

[root@wx14 vsftpd]# db_load -T -t hash -f /etc/vsftpd/virtualuser_passwd.txt /etc/vsftpd/virtualuser_passwd.db
 [root@wx14 vsftpd]# cat /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/virtualuser_passwd
account required pam_userdb.so db=/etc/vsftpd/virtualuser_passwd

[root@wx14 vsftpd]#  cd /web/www/wx14/cms_html/html
[root@wx14 html]# chown duoniu.duoniu .
[root@wx14 html]# cat /etc/passwd
duoniu:x:500:500::/web/www/wx14/cms_html/html:/bin/bash
        
要求二: 只允许 只读权限 可以下载
[root@fs156 vsftpd]# cat /etc/vsftpd/vsftpd.conf  
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
 
xferlog_enable=YES
xferlog_file=/etc/vsftpd/vsftpd.log
xferlog_std_format=YES
 
connect_from_port_20=YES
idle_session_timeout=600
listen=YES
 
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

pasv_min_port=30000
pasv_max_port=31000 

guest_enable=YES
guest_username=duoniu
user_config_dir=/etc/vsftpd/virtualuser_conf

[root@fs156 virtualuser_conf]# pwd
/etc/vsftpd/virtualuser_conf
[root@fs156 virtualuser_conf]# cat dn 
local_root=/web/www/wx14/pay.178.com
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
要求三: 在原本有ftp 的账户下 只允许 读、下载文件
[root@fs154 vsftpd]# pwd
/etc/vsftpd
[root@fs154 vsftpd]# cat  account.txt 
lianyun
stargame2018
dn
m2i3sc

[root@fs154 users]# pwd
/etc/vsftpd/users
[root@fs154 users]# ls
dn  lianyun
[root@fs154 users]# cat dn 
local_root=/web/www/wx17/game.stargame.com
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO

删除原来 accout.db文件,然后重新创建:
[root@fs154 vsftpd]# pwd
/etc/vsftpd
[root@fs154 vsftpd]#db_load -T -t hash -f /etc/vsftpd/account.txt  /etc/vsftpd/account.db

要求四: 允许上传,下载,删除 (主要是 anon_other_write_enable=YES)
# cat /etc/vsftpd/virtualuser_conf/xxx
local_root=/data/public/projects/volume-starcollection/starcollection-php-prod
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_umask=022
anon_mkdir_write_enable=YES
anon_other_write_enable=YES