zoukankan      html  css  js  c++  java
  • CentOS 7搭建vsftp(虚拟用户方式登录)

    说明:

    vsftpd的版本:vsftpd-3.0.2-22.el7.x86_64

    ftp 根目录 : /data/ftp
    ftp 配置文件目录:/etc/vsftpd
    ftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config

    实现目标:
    1)匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录
    2)虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作

    1.安装vsftpd,ftp和libdb-utils(需要安装db包,用来加密虚拟用户的账户信息,centos7默认安装好了)
    # yum install vsftpd ftp -y
    2.创建本地用户[用于映射虚拟用户]
    #建立ftp用户目录
    # mkdir -p /data/ftp
    #创建用户
    # useradd -d /data/ftp vuser -s /sbin/nologin
    #更改权限和主组权限
    # chmod 755 /data/ftp
    # chown vuser.root /data/ftp

    3.创建虚拟用户[用户和密码]文件
    # vim /etc/vsftpd/vuser-list
    abc [用户名]
    123456 [密码]
    bcd [用户名]
    123123 [密码]

    4.加密用户密码文件生成数据库文件
    # cd /etc/vsftpd/
    # db_load -T -t hash -f ./vuser-list ./vuser-list.db
    # chmod 600 vuser-list.db

    5.创建PAM认证文件
    # vi /etc/pam.d/vuser.vu
    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list #注意64位系统写/lib64这个路径,32位系统要写成/lib,下同!
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list

    6.修改配置文件
    # vi /etc/vsftpd/vsftpd.conf
    #允许匿名用户访问
    anonymous_enable=yes
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_file=/var/log/xferlog
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    #修改ftp默认目录到/data/ftp下面
    chroot_local_user=YES
    local_root=/data/ftp
    anon_root=/data/ftp
    #pam认证文件
    pam_service_name=vuser.vu
    #虚拟用户权限配置目录
    user_config_dir=/etc/vsftpd/vuser_config
    userlist_enable=YES
    tcp_wrappers=YES
    allow_writeable_chroot=YES
    one_process_model=NO
    #开启虚拟用户
    guest_enable=YES
    guest_username=vuser

    ===================================

    注意,如果vsftpd的版本是:vsftpd-2.2.2-24.el6.x86_64

    那么vsftpd.conf的配置文件修改如下,其他操作一样,不然的话2.2.2版本启动时会遇到各种问题:

    listen=YES
    local_enable=YES
    anon_umask=022
    anonymous_enable=YES
    pam_service_name=vuser.vu
    userlist_enable=YES
    chroot_local_user=YES
    local_root=/data/ftp
    anon_root=/data/ftp
    guest_enable=YES
    guest_username=vuser
    user_config_dir=/etc/vsftpd/vuser_config
    userlist_enable=YES
    xferlog_enable=YES
    xferlog_std_format=YES
    xferlog_file=/var/log/xferlog
    dual_log_enable=YES
    vsftpd_log_file=/var/log/vsftpd.log

    ===================================

    7.重启vsftpd服务
    # service vsftpd restart

    8.创建虚拟用户[权限]配置文件
    # mkdir /etc/vsftpd/vuser_config
    # cd /etc/vsftpd/vuser_config
    # vi abc [有所有权限]
    #设置登录后禁锢的目录
    local_root=/data/ftp/abc
    #开放写权限
    write_enable=yes
    #开放下载权限
    anon_world_readable_only=no
    #开放上传权限
    anon_upload_enable=yes
    #开放创建目录的权限
    anon_mkdir_write_enable=yes
    #开放删除和重命名的权限
    anon_other_write_enable=yes

    # vi bcd [只有上传下载的权限]
    local_root=/data/ftp/bcd
    anon_upload_enable=yes
    anon_world_readable_only=no

    9.更改虚拟用户目录权限
    #如果不更改的话,匿名用户是可以访问到的
    # mkdir /data/ftp/abc && chmod 700 /data/ftp/abc
    # mkdir /data/ftp/bcd && chmod 700 /data/ftp/bcd
    # chown -R vuser.root /data/ftp

    10.测试访问。

    11.添加用户(不需要重启vsftpd服务)
    #添加新用户test,密码为abcd
    # vi /etc/vsftpd/vuser-list
    abc
    123456
    bcd
    123456
    test
    abcd
    #创建test用户对应的目录并授权
    # mkdir /data/ftp/test && chown vuser:root /data/ftp/test
    #重新生成加密的db文件
    # cd /etc/vsftpd
    # db_load -T -t hash -f ./vuser-list ./vuser-list.db

    # 删除用户就是把添加用户的操作撤销,然后删除加密的db文件重新生成即可。

    12.测试访问,此时添加的test用户的/data/ftp/test目录的权限是755,匿名用户可以登录。若要屏蔽,修改权限为700即可。

    ===============================================

    错误处理:
    错误1:226 Transfer done (but failed to open directory)
    解决:selinux 和防火墙导致

    错误2:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    解决:配置文件中加入 allow_writeable_chroot=YES 针对标准vsftpd(standonly)模式,然后重启ftp.

    参考链接:http://blog.csdn.net/aerchi/article/details/78042443

  • 相关阅读:
    Oracle基础(二)之排序(order by)、限定查询(where)
    Python文件操作
    Python基础二
    Python基础一
    Linux系统学习之 三:新手必须掌握的Linux命令3
    Linux系统学习之 二:新手必须掌握的Linux命令2
    Linux系统学习之 一:新手必须掌握的Linux命令1
    Centos7.5虚拟机无法ping通网关、外网IP地址
    记一次mybatis的坑
    关于正则的那些事儿
  • 原文地址:https://www.cnblogs.com/wsjhk/p/8311037.html
Copyright © 2011-2022 走看看