在ubuntu12.4系统中配置vsftpd服务器并编写自动注册脚本

来源:互联网 发布:董事长和ceo知乎 编辑:程序博客网 时间:2024/05/22 00:46

step 1:搭建好vsftp后,/etc目录下手动添加3个文件,内容暂时为空:

        vsftpd.user_list
        ftpusers:这个文件已经存在,不用手动添加
        vsftpd.chroot_list

step 2:配置vsftpd.conf文件

        listen=NO采用super damon模式
        anonymous_enable=YES允许匿名登陆
        local_enable=YES本地用户可登陆
        write_enable=YES本地用户有写权限
        local_umask=022
        anon_upload_enable=YES匿名用户有上传权限
        dirmessage_enable=YESftp用户登陆时显示在登陆目录中.message文件中的内容
        use_localtime=YES
        xferlog_enable=YES动态记录上传下载的信息
        connect_from_port_20=YES端口设置为20
        chown_uploads=YES
        chown_username=root
        idle_session_timeout=600监听600秒没有响应就提出服务器
        data_connection_timeout=600连接服务器后,数据多长时间不能传入就断开服务
        nopriv_user=nobody
        chroot_local_user=YES
        chroot_list_enable=YES
        chroot_list_file=/etc/vsftpd.chroot_list
        secure_chroot_dir=/var/run/vsftpd意思是:vsftpd运行的目录
        pam_service_name=vsftpd加密(pam)传输模式,在目录/etc/pam.d/vsftpd
        rsa_cert_file=/etc/ssl/private/vsftpd.pem
        connect_timeout=60
        accept_timeout=60
        max_clients=200
        max_per_ip=8
        pasv_min_port=0
        pasv_max_port=0
        local_max_rate=0
        tcp_wrappers=YES
        userlist_enable=YES
        userlist_deny=NO
        userlist_file=/etc/vsftpd.user_list

step 3:在vsftpd.user_list这个文件中添加如下内容:

        # vsftpd userlist
        # If userlist_deny=NO, only allow users in this file
        # If userlist_deny=YES(default), never allow users in this file,and
        # do not even prompt for a password.
        # Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
        # for users that are denied.
        root
        bin
        daemon
        adm
        lp
        sync
        shutdown
        halt
        mail
        news
        uucp
        operator
        games
        nobody
        ftp
        这时可以察看一下ftpusers文件中的内容,要把你想允许访问的用户删掉或注释掉。如果你想让某个用户登陆就可以把它添加到vsftpd.user_list中。

step 4:选择super daemon模式:listen=NO,并安装xinetd:sudo apt-get install xinetd,并将如下内容添加到/etc/xinetd.conf中,此文件为自己创建

        serivice ftp
        {
                ssocket_type             = stream
                 wait                    = no
                 user                    = root
                  server                  = /usr/sbin/vsftpd
               log_on_success          += DURATION USERID
                 log_on_failure          += USERID
                     nice                    = 10
                       disable                 = no
        }
        然后停止vsftpd,启动xinetd:
        sudo service vsftpd stop
        sudo service xinetd start
        sudo netstat -npltu | grep 21

step 5:为ftp服务器创建用户,但是禁止ftp用户登陆系统,因此设置ftp用户的shell为nologin,由于ubuntu中的nologin不再/etc/shells中,所以先输入which nologin找到nologin的位置在:/usr/sbin/nologin.在将此地址添加到/etc/shells文件中,创建用户过程如下:

        sudo useradd -d /home/ftp/$1 -s /bin/false $1
        #下行为自动获取密码
        echo -e "$2\n$2" | passwd $1
        #下行为改变用户模式,取消他对系统的登陆权限
        usermod -s  /usr/sbin/nologin $1
step 6:最后将新创建的用户加入到/etc/vsftpd.user_list中,再重启服务器
        sudo service xinetd restart

step 6:ftp IP登陆vsftpd服务器了

下面为自动添加用户的脚本:register.sh


#!/bin/bash
# Check if /home/ftp is exited,and
# if not,then create the dir:/home/ftp
echo "step 1:检查目录/home/ftp是否存在,如果不存在就创建该目录"
if [ ! -d /home/ftp ]
then
        mkdir /home/ftp
fi
# check if user is exited,and if exited then exit,and
# if not,then create dir:/home/ftp/$1
echo "step 2:检查所要创建的用户是否存在,若不存在就创建用户并创建该用户目录"
if [ ! -d /home/ftp/$1 ]
then
        mkdir /home/ftp/$1
        echo "目录/home/ftp/$1创建成功!!"
else
        echo "目录/home/ftp/$1已经存在"
        exit 1
fi
chmod 755 /home/ftp/$1
#write some information into .message to show
echo "欢迎使用ftp服务,本目录为/home/ftp/$1" > /home/ftp/$1/.message
sudo useradd -d /home/ftp/$1 -s /bin/false $1
echo -e "$2\n$2" | passwd $1
echo "创建ftp用户成功"
# write a new user into /etc/vsftpd.user_list
echo "step 3:改变用户登陆模式"
sudo usermod -s /usr/sbin/nologin $1
echo "step 4:将新添加的用户添加到/etc/vsftpd.user_list,赋予新用户权限"
sudo echo $1 >> /etc/vsftpd.user_list
echo "step 5:重启ftp服务器,此服务器为super demon模式,守护进程xinetd"
sudo service xinetd restart


运行脚本时,注意更改权限:sudo chmod 777 register.sh
运行方式:sudo ./register.sh ftp1 111 (ftp1为用户名,111为密码)