zoukankan      html  css  js  c++  java
  • vsftpd

      0.ftp  1.LocalUser  2.VirtualUser  3.ftps  FAQ  last  


    0.ftp

    数据传输通道的建立方式分为:主动模式(active)、被动模式(passive);

    • active模式的建立过程;
    1. 客户端发送自己的地址、端口给服务端;
    2. 客户端请求服务端传输数据;
    3. 服务端发起数据传输连接;
    4. 数据传输通道建立。
    • passive模式的建立过程;
    1. 客户端要求服务端进入被动传输模式;
    2. 服务端提供给客户端自己的地址、端口;
    3. 客户端发起数据传输请求;
    4. 数据传输通道建立。

    1.系统用户

    1.1.添加用户

        添加系统用户,禁止登录系统,设定用户目录权限。

    [root@tri work]# useradd -d /data/vsftpd -s /sbin/nologin pub
    [root@tri work]# passwd pub
    [root@tri work]# chmod 500 /data/vsftpd
    [root@tri work]# mkdir /data/vsftpd/upload
    [root@tri work]# chown -R pub:pub /data/vsftpd
    [root@tri work]# rm /data/vsftpd/.*
    View Code

    1.2.编辑vsftpd.conf

        编辑配置,设定白名单。

    [root@tri work]# grep -v "^#" /etc/vsftpd/vsftpd.conf
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    #default is YES understand. passive mode
    pasv_enable=YES
    pasv_min_port=51000
    pasv_max_port=52160
    #pasv_address=0.0.0.0
    connect_from_port_20=NO
    xferlog_std_format=YES
    chroot_local_user=YES
    listen=YES
    listen_ipv6=NO
    #listen_port=21
    #listen_address=0.0.0.0
    
    pam_service_name=vsftpd
    userlist_enable=YES
    userlist_deny=NO
    tcp_wrappers=YES
    [root@tri work]# cat /etc/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.
    pub
    View Code

    2.VirtualUser

    • 虚拟用户访问ftp;
    1. vsftpd.conf,配置vsftpd;
      # Standalone mode
      listen=YES
      listen_address=0.0.0.0
      listen_port=10021
      max_clients=2000
      max_per_ip=50
      # Access rights
      anonymous_enable=NO
      local_enable=YES
      write_enable=NO
      anon_upload_enable=NO
      anon_mkdir_write_enable=NO
      anon_other_write_enable=NO
      # Security
      chroot_local_user=YES
      guest_enable=YES
      guest_username=virtual
      anon_world_readable_only=YES
      connect_from_port_20=YES
      hide_ids=YES
      pasv_min_port=30000
      pasv_max_port=39999
      pam_service_name=vsftpd
      # Features
      xferlog_enable=YES
      ls_recurse_enable=NO
      ascii_download_enable=NO
      async_abor_enable=YES
      # Performance
      idle_session_timeout=120
      data_connection_timeout=300
      accept_timeout=60
      connect_timeout=60
      anon_max_rate=1048576000
      View Code

      服务独立启动,监听10021端口;
      拒绝匿名用户,使用非匿名用户;
      启用虚拟用户,指定文件系统位置;
      关闭修改功能;

    2. login.db,创建虚拟用户信息库;
      db_load -T -t hash -f login.txt login.db
      View Code

      创建虚拟用户;

      useradd -d /opt/ftpsite -s /sbin/nologin virtual
      chmod 500 /opt/ftpsite
      View Code
    3. /etc/pam.d/vsftpd
      auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/login
      account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/login
      View Code
    4. 此用户仅仅可以完成下载功能;
    • 多用户配置
    1. 在配置配件添加配置选项:
      user_config_dir=/etc/vsftpd/conf.d
      View Code
    2. 读取权限
      anon_world_readable_only=NO
      View Code
    3. 上传权限
      write_enable=YES
      anon_upload_enable=YES
      anon_world_readable_only=NO
      anon_mkdir_write_enable=YES
      View Code
    4. 删除权限
      write_enable=YES
      anon_upload_enable=YES
      anon_world_readable_only=NO
      anon_mkdir_write_enable=YES
      anon_other_write_enable=YES
      View Code

    3.ftps


    [root@tri work]# vi /etc/vsftpd/vsftpd.conf
    下边三,默认为NO
    ssl_enable=YES
    ssl_tlsv=YES
    ssl_sslv3=YES
    下边俩,默认就是YES
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    下边壹,为默认值
    rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem
    默认为none,默认时认为私钥在上边文件中
    rsa_private_key_file=/etc/vsftpd/ssl/vsftpdKey.pem
    View Code

    FAQ

    1.530

      没有指定验证模块“pam_service_name=vsftpd”,

    [root@payqa1 work]# ftp localhost
    Trying 127.0.0.1...
    Connected to localhost (127.0.0.1).
    220 (vsFTPd 3.0.2)
    Name (localhost:root): pub
    331 Please specify the password.
    Password:
    530 Login incorrect.
    Login failed.
    ftp>

    2.500 oops

      ftp的登用用了系统用户,但是该用户又放在了其他用户目录下。就一直这么报错

    [root@localhost ~]# ftp localhost
    Trying ::1...
    ftp: connect to address ::1拒绝连接
    Trying 127.0.0.1...
    Connected to localhost (127.0.0.1).
    220 (vsFTPd 2.2.2)
    Name (localhost:root): pub
    331 Please specify the password.
    Password:
    500 OOPS: cannot change directory:/home/work/manager_file
    Login failed.
    ftp>
    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    源码篇:Python 实战案例----银行系统
    源码分享篇:使用Python进行QQ批量登录
    python制作电脑定时关机办公神器,另含其它两种方式,无需编程!
    Newtonsoft.Json 去掉
    C#Listview添加数据,选中最后一行,滚屏
    C# 6.0语法糖
    XmlHelper
    AppSettings操作类
    JsonHelper
    JS加载获取父窗体传递的参数
  • 原文地址:https://www.cnblogs.com/argor/p/7910869.html
Copyright © 2011-2022 走看看