shell

linux-vsftp

#!/bin/bash

#vsftpd_install_script_2016.1.14

vsftpd_file=/etc/vsftpd/vsftpd.conf
vconf_dir=/etc/vsftpd/vconf
vdata_dir=/var/ftp
pam_file=/etc/pam.d/vsftpd 
path=`pwd`

mkdir -p  $vconf_dir

#shuzu
vconfig=(
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
anon_umask=022
)
user_list=(
lys
zhy
djj
)

#hanshu
install_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"
    fi
fi
}

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
     done


done
}

user_data()
{
for  i in ${user_list[@]}
  do
   mkdir $vdata_dir/$i
 done

chown -R vsftpd.vsftpd /var/ftp/
}




pam_conf()
{
sed -i 's/^/#/g' $pam_file
sed -i '$aauth    required      /lib64/security/pam_userdb.so     db=/etc/vsftpd/userlogin' $pam_file
sed -i '$aaccount required      /lib64/security/pam_userdb.so     db=/etc/vsftpd/userlogin' $pam_file
}

vsftpd_conf()
{
sed -i  '$aguest_enable=YES'  $vsftpd_file
sed -i  '$aguest_username=vsftpd'  $vsftpd_file
sed -i  '$auser_config_dir=/etc/vsftpd/vconf'  $vsftpd_file
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/g'  $vsftpd_file
}



install_vsftpd
add_user
user_login
user_config
user_data
pam_conf
vsftpd_conf



/etc/init.d/vsftpd start
[root@salt-minion vuserconfig]# cat /etc/vsftpd/vsftpd.conf|grep -v "#"
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES

pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vuserconfig
max_clients=300
max_per_ip=10
userlist_enable=YES
tcp_wrappers=YES
[root@salt-minion vuserconfig]# pwd
/etc/vsftpd/vuserconfig
[root@salt-minion vuserconfig]# cat llyyss 
guest_enable=yes
guest_username=vip
write_enable=yes
local_root=/var/ftp/vip/llyyss
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_world_readable_only=no
anon_max_rate=100000
anon_other_write_enable=YES
[root@salt-minion vuserconfig]# 
[root@salt-minion vuserconfig]# cat /etc/passwd| grep vip
vip:x:511:511::/var/ftp/vip:/bin/bash
novip: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 100


if [ "$#" -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/$1

else

        echo "usage: $0 user passwoed"

fi

 

#chroot_local_user=YES
chroot_list_enable=YES
local_root=/var/www/html
chroot_list_file=/etc/vsftpd/chroot_list



#设置在/etc/vsftpd/chroot_list 中的用户锁定在/var/www/html 的目录中
chroot_list_enable=YES
local_root=/var/www/html
chroot_list_file=/etc/vsftpd/chroot_list


#设置所有的用户锁定在/var/www/html中
chroot_local_user=YES
local_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

 

posted @ 2017-03-27 17:36  devops运维  阅读(187)  评论(0编辑  收藏  举报
python