小昱个人博客
欢迎来到小昱的世界

勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏
[原]linux下安装及配置vsftpd
  • 首页 > 运维 > Linux
  • 作者:小昱
  • 2017年6月10日 12:33 星期六
  • 浏览:156
  • 字号:
  • 评论:0
  • 一、概述

    vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

    如果你想在你的Linux/Unix服务器上搭建一个安全、高性能、稳定性好的FTP 服务器,那么vsftpd可能是你的首选应用。vsftpd意思为“very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如 Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。

     

    二、下载安装

    如果您用的是centOS、Fedora 或Redhat 系统,可以用下面的命令在线安装;

    yum install vsftpd

    如果是debian Ubuntu类系统,可以用apt 来在线安装;

    apt-get install vsftpd

    如果您是RPM的系统,也可以找到vsftpd-xxxx.rpm 的包来通过rpm命令来安装;

    rpm -ivh vsftpd*.rpm

    也可以下载源码包来安装

    比如我们下载的是 vsftpd-2.0.3.tar.gz ;

    tar zxvf vsftpd-2.0.3.tar.gz
    cd vsftpd-2.0.3
    make ;make install
    cp vsftpd.conf /etc

    然后修改/etc/vsftpd.conf ,在配置文件的最后一行加入下面一行;

    listen=yes

    源码包安装的方法,如果您的系统是RPM包管理的系统,可以删除/etc/xinetd.d/vsftpd 这个文件;然后启动xinetd 服务器;

    /etc/init.d/xinetd restart
    停止 xinetd:    [  确定  ]
    启动 xinetd:    [  确定  ]
    vsFTPd运行有两种模式,在RPM包管理的系重审统,大多是由Fedora/Redhat 开发而来,对于这样的系统有xinted服务器一说;对于非RPM包管理的系统,一般没有xinted这一说。为了保证本文的统一,我们都不要用xinetd模式,而用initd运行模式来启动和管理服务器,也就是独立运行模式。

     

    三 、启动和关闭

    启动Vsftpd服务

    其命令为:

    service vsftpd start

    停止Vsftpd服务

    停止Vsftpd服务的命令为:

    service vsftpd stop

    重新启动Vsftpd服务

    重新启动Vsftpd服务的命令为:

    service vsftpd restart

    检查Vsftpd服务状态

    可以采用以下命令检查Vsftpd服务的运行状态:

    service vsftpd status  
    # vsftpd (pid 3571) 正在运行...

    也可以使用以下命令,实现相同的结果:

    /etc/init.d/vsftpd start  
    /etc/init.d/vsftpd stop  
    /etc/init.d/vsftpd restart

    启用超级服务启动

    [root@localhost ~]# vi /etc/xinetd.d/vsftpd
    service ftp
    {
        disable           = no
        socket_type       = stream
        wait              = no
        user              = root server            = /usr/sbin/vsftpd
        server_args       = /etc/vsftpd/vsftpd.conf
    # 上面这个 server 的设定请依照您的主机环境来设定!
    # 至于 server_args 则请写入您的 vsftpd 的配置文件完整名称即可!
        per_source        = 5     <==与同一 IP 的联机数目有关
        instances         = 200   <==同一时间最多的联机数目
        no_access         = 192.168.1.3
        banner_fail       = /etc/vsftpd/vsftpd.busy_banner
    # 上面这个文件就是当主机忙碌中,则在 Client 端显示的内容!
        log_on_success    += PID HOST DURATION
        log_on_failure    += HOST
    }
    
    [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
    listen=NO

     

    四、配置文件

    vsftpd的配置文件

    文件 描述
    /etc/vsftpd/vsftpd.conf 主配置文件
    /usr/sbin/vsftpd Vsftpd的主程序
    /etc/rc.d/init.d/vsftpd 启动脚本
    /etc/pam.d/vsftpd PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
    /etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
    /etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)
    /var/ftp 匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
    /var/ftp/pub 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
    /etc/logrotate.d/vsftpd.log Vsftpd的日志文件

    主配置文件vsftpd.conf

    和Linux系统中的大多数配置文件一样,vsftpd的配置文件中以#开始注释。

    # 是否允许匿名登录FTP服务器,默认设置为YES允许
    # 用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。
    # 如不允许匿名访问则设置为NO
    anonymous_enable=YES
    # 是否允许本地用户(即linux系统中的用户帐号)登录FTP服务器,默认设置为YES允许
    # 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub
    # 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问FTP服务器
    local_enable=YES
    # 是否允许本地用户对FTP服务器文件具有写权限,默认设置为YES允许
    write_enable=YES 
    # 掩码,本地用户默认掩码为077
    # 你可以设置本地用户的文件掩码为缺省022,也可根据个人喜好将其设置为其他值
    #local_umask=022
    # 是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
    #anon_upload_enable=YES
    # 是否允许匿名用户创建新文件夹
    #anon_mkdir_write_enable=YES 
    # 是否激活目录欢迎信息功能
    # 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息
    # 默认情况下,欢迎信息是通过该目录下的.message文件获得的
    # 此文件保存自定义的欢迎信息,由用户自己建立
    #dirmessage_enable=YES
    # 是否让系统自动维护上传和下载的日志文件
    # 默认情况该日志文件为/var/log/vsftpd.log,也可以通过下面的xferlog_file选项对其进行设定
    # 默认值为NO
    xferlog_enable=YES
    # Make sure PORT transfer connections originate from port 20 (ftp-data).
    # 是否设定FTP服务器将启用FTP数据端口的连接请求
    # ftp-data数据传输,21为连接控制端口
    connect_from_port_20=YES
    # 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
    # 注意,不推荐使用root用户上传文件
    #chown_uploads=YES
    # 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名
    # 可以把上传的文件都改成root属主。whoever:任何人
    #chown_username=whoever
    # 设定系统维护记录FTP服务器上传和下载情况的日志文件
    # /var/log/vsftpd.log是默认的,也可以另设其它
    #xferlog_file=/var/log/vsftpd.log
    # 是否以标准xferlog的格式书写传输日志文件
    # 默认为/var/log/xferlog,也可以通过xferlog_file选项对其进行设定
    # 默认值为NO
    #xferlog_std_format=YES
    # 以下是附加配置,添加相应的选项将启用相应的设置
    # 是否生成两个相似的日志文件
    # 默认在/var/log/xferlog和/var/log/vsftpd.log目录下
    # 前者是wu_ftpd类型的传输日志,可以利用标准日志工具对其进行分析;后者是vsftpd类型的日志
    #dual_log_enable
    # 是否将原本输出到/var/log/vsftpd.log中的日志,输出到系统日志
    #syslog_enable
    # 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒
    # 即当数据传输结束后,用户连接FTP服务器的时间不应超过600秒。可以根据实际情况对该值进行修改
    #idle_session_timeout=600
    # 设置数据连接超时时间,该语句表示数据连接超时时间为120秒,可根据实际情况对其个修改
    #data_connection_timeout=120
    # 运行vsftpd需要的非特权系统用户,缺省是nobody
    #nopriv_user=ftpsecure
    # 是否识别异步ABOR请求。
    # 如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用
    # 而一般此设定并不安全,所以通常将其取消
    #async_abor_enable=YES
    # 是否以ASCII方式传输数据。默认情况下,服务器会忽略ASCII方式的请求。
    # 启用此选项将允许服务器以ASCII方式传输数据
    # 不过,这样可能会导致由"SIZE /big/file"方式引起的DoS攻击
    #ascii_upload_enable=YES
    #ascii_download_enable=YES
    # 登录FTP服务器时显示的欢迎信息
    # 如有需要,可在更改目录欢迎信息的目录下创建名为.message的文件,并写入欢迎信息保存后
    #ftpd_banner=Welcome to blah FTP service.
    # 黑名单设置。如果很讨厌某些email address,就可以使用此设定来取消他的登录权限
    # 可以将某些特殊的email address抵挡住。
    #deny_email_enable=YES
    # 当上面的deny_email_enable=YES时,可以利用这个设定项来规定哪些邮件地址不可登录vsftpd服务器
    # 此文件需用户自己创建,一行一个email address即可
    #banned_email_file=/etc/vsftpd/banned_emails
    # 用户登录FTP服务器后是否具有访问自己目录以外的其他文件的权限
    # 设置为YES时,用户被锁定在自己的home目录中,vsftpd将在下面chroot_list_file选项值的位置寻找chroot_list文件
    # 必须与下面的设置项配合
    #chroot_list_enable=YES
    # 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录
    # 从而有利于FTP服务器的安全管理和隐私保护。此文件需自己建立
    #chroot_list_file=/etc/vsftpd/chroot_list
    # 是否允许递归查询。默认为关闭,以防止远程用户造成过量的I/O
    #ls_recurse_enable=YES
    # 是否允许监听。
    # 如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
    listen=YES
    # 设定是否支持IPV6。如要同时监听IPv4和IPv6端口,
    # 则必须运行两套vsftpd,采用两套配置文件
    # 同时确保其中有一个监听选项是被注释掉的
    #listen_ipv6=YES
    # 设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
    # 此文件中file=/etc/vsftpd/ftpusers字段,说明了PAM模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers中
    #pam_service_name=vsftpd
    # 是否允许ftpusers文件中的用户登录FTP服务器,默认为NO
    # 若此项设为YES,则user_list文件中的用户允许登录FTP服务器
    # 而如果同时设置了userlist_deny=YES,则user_list文件中的用户将不允许登录FTP服务器,甚至连输入密码提示信息都没有
    #userlist_enable=YES/NO
    # 设置是否阻扯user_list文件中的用户登录FTP服务器,默认为YES
    #userlist_deny=YES/NO
    # 是否使用tcp_wrappers作为主机访问控制方式。
    # tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制
    # 在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
    # 前者设置允许访问记录,后者设置拒绝访问记录。
    # 如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增加两行命令:
    # vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
    # 表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器
    # 此时FTP服务器虽可以PING通,但无法连接
    tcp_wrappers=YES

     

    五、修改上传路径

    修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可:

    加入如下几行:

    chroot_local_user=YES
    local_root=/var/www/html
    anon_root=/var/www/html

    注:local_root 针对系统用户;anon_root 针对匿名用户。

    重新启动服务:

    service vsftpd restart

    任何一个用户ftp登录到这个服务器上都会chroot到/var/www/html目录下。

     

    六、用户登录

    使用匿名用户登入

    [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
    anonymous_enable=YES

    使用本地用户登入

    [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
    #下面是允许某些用户登入的项目  存在user_list文件中的用户不允许登入
    userlist_enable=YES
    userlist_deny=YES #如果这里改为NO  反过来只能存在user_list文件中的用户允许登入
    userlist_file=/etc/vsftpd/user_list
    anonymous_enable=NO #不允许匿名登录
    
    #下面是限制用户只能访问自己的主目录  存在chroot_list文件中的用户只能访问自己的主目录
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

    新建个用户 这样重启服务 可以在客户端使用新建的本地用户登入了。

    也可以如此设置:

    vim /etc/vsftd/vsftpd.conf 
    #增加
    pam_service_name=vsftpd
    userlist_enable=YES
    userlist_deny=NO
    userlist_file=/etc/vsftpd/user_list
    
    vim /etc/vsftpd/user_list
    #增加访问的用户
    
    vim /etc/vsftpd/ftpusers
    #添加拒绝访问的用户

    使用虚拟用户登入

    #创建两个目录
    [root@localhost ~]#mkdir /home/vsftpd/ftp1
    [root@localhost ~]# mkdir /home/vsftpd/ftp3
    
    [root@localhost ~]# vi /etc/vsftpd/loginuser.txt
    #加入两个用户  奇数行代表用户名 偶数行代表密码
    xftpadmin
    123456
    xftpuser
    123456
    
    #执行命令 生成虚拟数据库
    [root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/login.db
    #设置数据库文件的访问权限
    [root@localhost ~]# chmod 600 /etc/vsftpd/login.db
    [root@localhost ~]# vi /etc/pam.d/vsftpd
    #将以下内容增加的原文件前面两行:
    auth required pam_userdb.so db=/etc/vsftpd/login
    account required pam_userdb.so db=/etc/vsftpd/login
           #我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd.vu来启用的。
    
    vsftpd使用的pam文件
    auth    sufficient      pam_userdb.so db=/etc/vsftpd/login
    account sufficient      pam_userdb.so db=/etc/vsftpd/login
    
    #auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
    #auth       required     pam_stack.so service=system-auth
    #auth       required     pam_shells.so
    #account    required     pam_stack.so service=system-auth
    #session    required     pam_stack.so service=system-auth
    
    
    可以看出前面两行是对虚拟用户的验证,后面是对系统用户的验证。 为了安全我一般把系统用户的登入关闭  使用虚拟账号登入ftp
    对虚拟用户的验证使用了sufficient这个控制标志。
    这个标志的含义是如果这个模块验证通过,就不必使用后面的层叠模块进行验证了;但如果失败了,
    就继续后面的认证,也就是使用系统真实用户的验证。
    虚拟用户创建本地系统用户
    
    #新建一个系统用户vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)
    [root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /bin/false 
    [root@localhost ~]# chown vsftpd:vsftpd /home/vsftpd #改变目录所属用户组
    
    根据需要创建/etc/vsftpd/vsftpd.conf,以下设置: 
    
    listen=YES                       #监听为专用模式
    anonymous_enable=NO              #禁用匿名登入
    dirmessage_enable=YES
    xferlog_enable=YES
    xferlog_file=/var/log/vsftpd.log   #记录ftp操作日志
    xferlog_std_format=YES
    chroot_local_user=YES          #对用户访问只限制在主目录 不能访问其他目录
    guest_enable=YES               #启用guest
    guest_username=vsftpd           #使用虚拟账号形式
    user_config_dir=/etc/vsftpd_user_conf  #虚拟账号配置目录
    pam_service_name=vsftpd              #对vsftpd的用户使用pam认证
    local_enable=YES
    
    #执行以下命令
    [root@localhost ~]# mkdir /etc/vsftpd/user_conf
    [root@localhost ~]# cd /etc/vsftpd/user_conf
    [root@localhost ~]# touch xftpuser xftpadmin #创建两个文件
    
    [root@localhost ~]# vi /etc/vsftpd/user_config/xftpadmin
    #加入以下内容 拥有所有权限
    write_enable=YES
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    local_root=/home/vsftpd/ftp3
    
    [root@localhost ~]# vi /etc/vsftpd/user_config/xftpuser
    #加入以下内容 只读权限
    local_root=/home/vsftpd/ftp1
    
    #登入 使用ftp1用户登入看看 
    如果不能读写操作 可能是目录权限不够需要设置权限 试试看
    
    [root@localhost ~]# chmod 777 /home/vsftpd/ftp3

    这样就可以用虚拟账号登入了  ftpadmin、ftpuser分别登入之后访问的是ftp3、ftp1目录。

    使用ssl登入

    [root@localhost ~]# cd /etc/pki/tls/certs/
    [root@localhost ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
    
    # 修改vsftpd.conf文件
    [root@localhost ~]#vi /usr/local/etc/vsftpd.conf .
    ssl_enable=YES(开启vsftpd对ssl协议的支持)
    ssl_sslv2=YES(支持SSL v2 protocol)
    ssl_sslv3=YES(支持SSL v3 protocol)
    ssl_tlsv1=YES(支持TSL v1)
    rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem(证书的路径)
    
    ssl_enable=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    ssl_tlsv1=YES

    这样重启vsftpd 就可以用客户端来尝试进行SSL加密连接了。

     

    七、vsftpd.conf 设定详细说明

    与主机较相关的设定值

    connect_from_port_20=YES (NO)
    ftp-data 的端口;
    
    listen_port=21
    vsftpd 使用的命令通道之端口号,如果您想要使用非正规的端口,在这个设定项目修改吧! 不过你必须要知道,这个设定值仅适合以 stand alone 的方式来启动(对于 super daemon 无效)
    
    dirmessage_enable=YES (NO)
    当用户进入某个目录时,会显示该目录需要注意的内容,显示的文件默认是 .message ,你可以使用底下的设定项目来修改!
    
    message_file=.message
    当 dirmessage_enable=YES 时,可以设定这个项目来让 vsftpd 寻找该文件来显示信息!
    
    listen=YES (NO)
    若设定为 YES 表示 vsftpd 是以 standalone 的方式来启动的
    
    pasv_enable=YES (NO)
    启动被动式联机模式(passive mode),一定要设定为 YES 的
    
    use_localtime=YES (NO)
    是否使用本地时间?vsftpd 预设使用 GMT 时间(格林威治)
    
    write_enable=YES (NO)
    如果你允许用户上传数据时,就要启动这个设定值;
    
    connect_timeout=60
    单位是秒,在数据连接的主动式联机模式下,我们发出的连接讯号在 60 秒内得不到客户端的响应,则不等待并强制断线。
    
    accept_timeout=60
    当用户以被动式 PASV 来进行数据传输时,如果主机启用 passive port 并等待 client 超过 60 秒而无回应, 那么就给他强制断线!这个设定值与 connect_timeout 类似,不过一个是管理主动联机,一个管理被动联机。
    
    data_connection_timeout=300
    如果服务器与客户端的数据联机已经成功建立 (不论主动还是被动联机),但是可能由于线路问题导致 300 秒内还是无法顺利的完成数据的传送,那客户端的联机就会被我们的 vsftpd 强制剔除!
    
    idle_session_timeout=300
    如果使用者在 300 秒内都没有命令动作,强制脱机
    
    max_clients=0
    如果 vsftpd 是以 stand alone 方式启动的,那么这个设定项目可以设定同一时间,最多有多少 client 可以同时连上 vsftpd
    
    max_per_ip=0
    与上面 max_clients 类似,这里是同一个 IP 同一时间可允许多少联机?
    
    pasv_min_port=0, pasv_max_port=0
    上面两个是与 passive mode 使用的 port number 有关,如果您想要使用 65400 到 65410 这 11 个 port 来进行被动式联机模式的连接,可以这样设定 pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的话,表示随机取用而不限制。
    
    ftpd_banner=一些文字说明
    当使用者联机进入到 vsftpd 时,在 FTP 客户端软件上头会显示的说明文字。不过,这个设定值数据比较少啦! 建议你可以使用底下的设定值来取代这个项目;
    
    banner_file=/path/file
    这个项目可以指定某个纯文本档作为使用者登入 vsftpd 服务器时所显示的欢迎字眼。

    与实体用户较相关的设定值

    guest_enable=YES (NO)
    若这个值设定为 YES 时,那么任何非 anonymous 登入的账号,均会被假设成为 guest (访客)   至于访客在 vsftpd 当中,预设会取得 ftp 这个使用者的相关权限。但可以透过 guest_username 来修改。
    
    guest_username=ftp
    在 guest_enable=YES 时才会生效,指定访客的身份而已。
    
    local_enable=YES (NO)
    这个设定值必须要为 YES 时,在 /etc/passwd 内的账号才能以实体用户的方式登入我们的 vsftpd 主机
    
    local_max_rate=0
    实体用户的传输速度限制,单位为 bytes/second, 0 为不限制。
    
    chroot_local_user=YES (NO)
    将用户限制在自己的家目录之内(chroot)!这个设定在 vsftpd 当中预设是 NO,因为有底下两个设定项目的辅助喔! 所以不需要启动他!
    chroot_list_enable=YES (NO)
    是否启用将某些实体用户限制在他们的家目录内?预设是 NO ,不过,如果您想要让某些使用者无法离开他们的家目录时, 可以考虑将这个设定为 YES ,并且规划下个设定值
    
    chroot_list_file=/etc/vsftpd.chroot_list
    如果 chroot_list_enable=YES 那么就可以设定这个项目了! 他里面可以规定那一个实体用户会被限制在自己的家目录内而无法离开!(chroot) 一行一个账号即可!
    
    userlist_enable=YES (NO)
    是否藉助 vsftpd 的抵挡机制来处理某些不受欢迎的账号,与底下的设定有关;
    
    userlist_deny=YES (NO)
    当 userlist_enable=YES 时才会生效的设定,若此设定值为 YES 时,则当使用者账号被列入到某个文件时, 在该文件内的使用者将无法登入 vsftpd 服务器!该文件名与下列设定项目有关。
    userlist_file=/etc/vsftpd.user_list
    若上面 userlist_deny=YES 时,则这个文件就有用处了!在这个文件内的账号都无法使用 vsftpd

    匿名者登入的设定值

    anonymous_enable=YES (NO)
    设定为允许 anonymous 登入我们的 vsftpd 主机!预设是 YES ,底下的所有相关设定都需要将这个设定为 anonymous_enable=YES 之后才会生效!
    
    anon_world_readable_only=YES (NO)
    仅允许 anonymous 具有下载可读文件的权限,预设是 YES。
    
    anon_other_write_enable=YES (NO)
    是否允许 anonymous 具有写入的权限?预设是 NO!如果要设定为 YES, 那么开放给 anonymous 写入的目录亦需要调整权限,让 vsftpd 的 PID 拥有者可以写入才行!
    
    anon_mkdir_write_enable=YES (NO)
    是否让 anonymous 具有建立目录的权限?默认值是 NO!如果要设定为 YES, 那么 anony_other_write_enable 必须设定为 YES !
    
    anon_upload_enable=YES (NO)
    是否让 anonymous 具有上传数据的功能,默认是 NO,如果要设定为 YES , 则 anon_other_write_enable=YES 必须设定。
    
    deny_email_enable=YES (NO)
    将某些特殊的 email address 抵挡住,不让那些 anonymous 登入! 如果以 anonymous 登入主机时,不是会要求输入密码吗?密码不是要您 输入您的 email address 吗?如果你很讨厌某些 email address , 就可以使用这个设定来将他取消登入的权限!需与下个设定项目配合:
    
    banned_email_file=/etc/vsftpd.banned_emails
    如果 deny_email_enable=YES 时,可以利用这个设定项目来规定哪个 email address 不可登入我们的 vsftpd 喔!在上面设定的文件内,一行输入一个 email address 即可!
    
    no_anon_password=YES (NO)
    当设定为 YES 时,表示 anonymous 将会略过密码检验步骤,而直接进入 vsftpd 服务器内喔!所以一般预设都是 NO
    
    anon_max_rate=0
    这个设定值后面接的数值单位为 bytes/秒 ,限制 anonymous 的传输速度,如果是 0 则不限制(由最大带宽所限制),如果您想让 anonymous 仅有 30 KB/s 的速度,可以设定『anon_max_rate=30000』
    
    anon_umask=077
    限制 anonymous 的权限!如果是 077 则 anonymous 传送过来的文件 权限会是 -rw-------

    关于系统安全方面的一些设定值

    ascii_download_enable=YES (NO)
    如果设定为 YES ,那么 client 就可以使用 ASCII 格式下载文件。
    
    ascii_upload_enable=YES (NO)
    与上一个设定类似的,只是这个设定针对上传而言!预设是 NO
    
    one_process_model=YES (NO)
    这个设定项目比较危险一点~当设定为 YES 时,表示每个建立的联机 都会拥有一支 process 在负责,可以增加 vsftpd 的效能。不过, 除非您的系统比较安全,而且硬件配备比较高,否则容易耗尽系统资源  一般建议设定为 NO
    
    tcp_wrappers=YES (NO)
    当然我们都习惯支持 TCP Wrappers 的  所以设定为 YES
    
    xferlog_enable=YES (NO)
    当设定为 YES 时,使用者上传与下载文件都会被纪录起来。记录的文件与下一个设定项目有关:
    
    xferlog_file=/var/log/vsftpd.log
    如果上一个 xferlog_enable=YES 的话,这里就可以设定了!这个是登文件的名称
    
    xferlog_std_format=YES (NO)
    是否设定为 wu ftp 相同的登录档格式?!预设为 NO ,因为登录档会比较容易读! 不过,如果您有使用 wu ftp 登录文件的分析软件,这里才需要设定为 YES
    
    nopriv_user=nobody
    我们的 vsftpd 预设以 nobody 作为此一服务执行者的权限。因为 nobody 的权限 相当的低,因此即使被入侵,入侵者仅能取得 nobody 的权限
    
    pam_service_name=vsftpd
    这个是 pam 模块的名称,我们放置在 /etc/pam.d/vsftpd 即是这个

    在linux中添加ftp用户,并设置相应的权限,操作步骤如下:

    环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/test

    ## 增加用户test,并制定test用户的主目录为/home/test
    useradd -d /home/test test
    ## 为test设置密码
    passwd test
    ## 更改用户相应的权限设置,限定用户test不能telnet,只能ftp
    usermod -s /sbin/nologin test
    ## 恢复登录权限
    usermod -s /bin/bash
    ## 更改用户test的主目录为/test
    usermod -d /test test

    限制用户只能访问/home/test,不能访问其他路径

    修改/etc/vsftpd/vsftpd.conf如下:

    ## 限制访问自身目录
    chroot_local_user=YES
    chroot_list_enable=YES
    ## 只有在chroot_list中的用户才能跳出自己的主目录
    chroot_list_file=/etc/vsftpd/chroot_list
    创建chroot_list文件并将ftp用户名写进去

    改完配置文件,不要忘记重启vsFTPd服务器

    /etc/init.d/vsftpd restart

    如果需要允许用户修改密码,但是又没有telnet登录系统的权限:

    ##  用户telnet后将直接进入改密界面
    usermod -s /usr/bin/passwd test

     

    八、其他

    netstat -ntlp #检查21端口是否开启
    iptables -nvL #检查防火墙是否开启21端口

     


    参考资料

    VSFTP入门 ---- 安装、配置、案例与常见问题

    如何在linux下开启FTP服务

    Linux系统中vsftpd配置及如何添加vsFTPd用户和设置权限

      您阅读这篇文章共花了:  
    二维码加载中...
    本文作者:小昱      文章标题: [原]linux下安装及配置vsftpd
    本文地址:http://www.xiaoyulive.top/?post=75
    版权声明:若无注明,本文皆为“小昱个人博客”原创,转载请保留文章出处。
    返回顶部| 首页| 碰碰手气| 捐赠支持| 手机版本|后花园

    Copyright © 2016-2017 小昱个人博客 滇ICP备16006294号