zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    路由策略
    ospf 路由汇总
    OSPF type1 2
    ospf
    TCP 六种标识位
    raid 10 与 01
    SNMP协议
    ffmpeg剪切视频
    ubuntu18安装sbt
    服务器Ubuntu18重启后宝塔访问不了
  • 原文地址:https://www.cnblogs.com/liuyoushui/p/6627856.html
Copyright © 2011-2022 走看看