#!/bin/bash#vsftpd_install_script_2016.1.14vsftpd_file=/etc/vsftpd/vsftpd.confvconf_dir=/etc/vsftpd/vconfvdata_dir=/var/ftppam_file=/etc/pam.d/vsftpd path=`pwd`mkdir -p $vconf_dir#shuzuvconfig=(anon_upload_enable=YESanon_mkdir_write_enable=YESanon_world_readable_only=NOanon_other_write_enable=YESanon_umask=022)user_list=(lyszhydjj)#hanshuinstall_vsftpd(){if [ -f $vsftpd_file ] then echo "vsftpd is install" exit 1 else yum install vsftpd* pam* db4* -y if [ $? -eq 0 ] then echo "install vsftpd is OK" fifi}add_user(){if [ `grep -c vsftpd /etc/passwd` -eq 0 ] then useradd vsftpd -s /sbin/nologin && echo " add user vsftpd is OK" else echo "user vsftpd is add"fi}user_login(){for i in ${user_list[@]} do echo $i >>${path}/userlogin echo ${i}123456 >>${path}/userlogin done db_load -T -t hash -f ${path}/userlogin /etc/vsftpd/userlogin.db && \ chmod 600 /etc/vsftpd/userlogin.db && echo "touch /etc/vsftpd/userlogin is OK....."}user_config(){for i in ${user_list[@]}do touch $vconf_dir/$i echo local_root=$vdata_dir/$i >>$vconf_dir/$i for n in ${vconfig[@]} do echo $n >>$vconf_dir/$i donedone}user_data(){for i in ${user_list[@]} do mkdir $vdata_dir/$i donechown -R vsftpd.vsftpd /var/ftp/}pam_conf(){sed -i 's/^/#/g' $pam_filesed -i '$aauth required /lib64/security/pam_userdb.so db=/etc/vsftpd/userlogin' $pam_filesed -i '$aaccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/userlogin' $pam_file}vsftpd_conf(){sed -i '$aguest_enable=YES' $vsftpd_filesed -i '$aguest_username=vsftpd' $vsftpd_filesed -i '$auser_config_dir=/etc/vsftpd/vconf' $vsftpd_filesed -i 's/anonymous_enable=YES/anonymous_enable=NO/g' $vsftpd_file}install_vsftpdadd_useruser_loginuser_configuser_datapam_confvsftpd_conf/etc/init.d/vsftpd start
[root@salt-minion vuserconfig]# cat /etc/vsftpd/vsftpd.conf|grep -v "#"anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESchroot_local_user=YESlisten=YESpam_service_name=vsftpduser_config_dir=/etc/vsftpd/vuserconfigmax_clients=300max_per_ip=10userlist_enable=YEStcp_wrappers=YES[root@salt-minion vuserconfig]# pwd/etc/vsftpd/vuserconfig[root@salt-minion vuserconfig]# cat llyyss guest_enable=yesguest_username=vipwrite_enable=yeslocal_root=/var/ftp/vip/llyyssanon_mkdir_write_enable=yesanon_upload_enable=yesanon_world_readable_only=noanon_max_rate=100000anon_other_write_enable=YES[root@salt-minion vuserconfig]#
[root@salt-minion vuserconfig]# cat /etc/passwd| grep vipvip:x:511:511::/var/ftp/vip:/bin/bashnovip:x:512:512::/var/ftp/novip:/bin/bash
[root@Devops]# cat useradd.sh #!/bin/bash[ `grep -c $1 /etc/passwd` -eq 1 ] && echo 'user have' && exit 100if [ "$#" -eq 2 ]then mkdir /update_package/$1 useradd $1 -d /update_package/$1 -s /sbin/nologin && echo "$2" | passwd --stdin $1 [ `grep -c $1 /etc/passwd` -eq 1 ] && echo "useradd True........." chown -R $1.$1 /update_package/$1 touch /update_package/$1/$1 chattr +i /update_package/$1/$1else echo "usage: $0 user passwoed"fi
#chroot_local_user=YESchroot_list_enable=YESlocal_root=/var/www/htmlchroot_list_file=/etc/vsftpd/chroot_list#设置在/etc/vsftpd/chroot_list 中的用户锁定在/var/www/html 的目录中chroot_list_enable=YESlocal_root=/var/www/htmlchroot_list_file=/etc/vsftpd/chroot_list#设置所有的用户锁定在/var/www/html中chroot_local_user=YESlocal_root=/var/www/html#设置所有用户锁定在自己家目录中chroot_local_user=YES
[root@xuegod63 ~]# vim /etc/vsftpd/vuserconfig/nonevip
guest_enable=yes
guest_username=ftpuser
anon_world_readable_only=no
anon_max_rate=50000
解释:
guest_enable=yes:开启虚拟帐号登录
guest_username=ftpuser:设置ftp 对应的系统帐号为ftpuser
anon_world_readable_only=no:允许匿名用户浏览整个服务器的文件系统
anon_max_rate=50000:限定传输速率为50KB/s
注意:
vsftpd 对于文件传输速度限制并不是绝对锁定在一个数值上哈,而是在80%~120%之间变化
比如设置100KB/s 则实际是速度在80KB/s~120KB/s 之间变化
下面是合作伙伴帐号的配置文件vip
[root@xuegod63 ~]# vim /etc/vsftpd/vuserconfig/vip #写入以下内容
解释:
guest_enable=yes:开启虚拟帐号登录
guest_username=ftpvip:设置ftp 对应的系统帐号为ftpvip
anon_world_readable_only=no:允许匿名用户浏览器整个服务器的文件系统
write_enable=yes:允许在文件系统写入权限
anon_mkdir_write_enable=yes:允许创建文件夹
anon_upload_enable=yes:开启匿名帐号的上传功能
anon_max_rate=100000:限定传输速度为100KB/s
允许:vip帐号 删除文件
[root@xuegod63 vsftpd]# cat vuserconfig/vip
guest_enable=yes
guest_username=ftpvip
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=YES # 允许删除,重命名等
anon_max_rate=100000
回顾配置文件参数:
anonymous_enable=YES #启用匿名用户(anonymous、ftp)
local_enable=YES #本地用户、启用
write_enable=YES #本地用户、可写
#anon_upload_enable=YES #匿名用户可写
#anon_mkdir_write_enable=YES #匿名用户可以创建目录
#idle_session_timeout=600 #超时时间
#data_connection_timeout=120 #超时时间
listen=YES #是否监听
pam_service_name=vsftpd #开启pam支持
userlist_enable=YES #用户列表功能开启
tcp_wrappers=YES #开始tcp_wrappers支持
黑白名单:
userlist_deny=NO #黑名单变白名单
锁定用户访问的目录:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #写谁锁谁
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #写谁不锁谁
其他功能:
匿名用户可以重命名和删除:
anon_other_write_enable=YES
bind IP(帮定监听IP):
listen_address=IP
local_max_rate=N
anon_max_rate=N
max_client=N
max_per_ip=N