zoukankan      html  css  js  c++  java
  • vsftpd 虚拟用户配置

    vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录。

    从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查发现还有写权限,就会报该错误!

    500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
    

    因此,本次分别用 Centos 6 和 Centos 7 来分别配置 vsftpd 虚拟用户

    1. Centos6 vsftpd-虚拟用户配置

    ----------------------------------------------------
    系统版本:CentOS release 6.7
    vsftpd版本:vsftpd-2.2.2-24
    虚拟用户:hkey
    虚拟用户根目录:/data/hkey
    ----------------------------------------------------

    # yum install vsftpd -y
    # mkdir -pv  /data/hkey
    # sed -i -e 's/^anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/^write_enable=YES/#write_enable=YES/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/^#chroot_local_user=YES/chroot_local_user=YES/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/^pam_service_name=vsftpd/#pam_service_name=vsftpd/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/listen=NO/listen=YES/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/listen_ipv6=YES/#listen_ipv6=YES/g' /etc/vsftpd/vsftpd.conf
    # echo -e 'pam_service_name=vsftpd.vu
    virtual_use_local_privs=NO
    guest_enable=YES
    guest_username=root
    user_config_dir=/etc/vsftpd/vconf' >> /etc/vsftpd/vsftpd.conf
    
    # egrep -v '^#|^$' /etc/vsftpd/vsftpd.conf
    #关闭匿名访问
    anonymous_enable=NO
    #启用本地系统用户,包括虚拟用户
    local_enable=YES
    #本地用户umask值
    local_umask=022
    dirmessage_enable=YES
    #启用日志
    xferlog_enable=YES
    xferlog_std_format=YES
    #关闭ftp-data端口,相当于不使用主动模式
    connect_from_port_20=YES
    #限制用户不能离开FTP主目录,启用并设置例外用户清单
    chroot_local_user=YES
    #使用ipv4进行监听
    listen=YES
    #启用全局用户例外清单
    userlist_enable=YES
    #启用tcp封装
    tcp_wrappers=YES
    #pam认证文件名称,位于/etc/pam.d/
    pam_service_name=vsftpd.vu
    #虚拟用户权限是否与本地用户相同。为NO时,将与匿名用户的权限相同,在每个虚拟用户配置文件里设置匿名用户的选项等于虚拟用户的权限
    virtual_use_local_privs=NO
    #启用guest后,所有非匿名用户将映射到guest_username进行访问,包括本地系统用户也不能使用,并且转换成一个虚拟用户,与其他虚拟用户的配置方法一样
    guest_enable=YES
    # 虚拟用户使用的主用户(这里使用 root是为了比较方便配置各种目录)
    guest_username=root
    #虚拟用户配置文件目录
    user_config_dir=/etc/vsftpd/vconf
    
    # mkdir /etc/vsftpd/vconf/
    
    # 一行用户名,一行密码,严格遵守这样的格式
    # cat /etc/vsftpd/vuser.txt
    hkey
    hkey123
    
    # 生成数据库
    # db_load -T -t hash  -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
    
    # 添加认证文件
    # cat /etc/pam.d/vsftpd.vu 
    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
    

    【开放所有权限】

    # cat /etc/vsftpd/vconf/hkey   
    
    local_root=/data/hkey # 设置登录后禁锢的根目录
    write_enable=yes # 开发写权限
    anon_world_readable_only=no # 开放下载权限
    anon_upload_enable=yes # 开放上传权限
    anon_mkdir_write_enable=yes # 开放创建目录的权限
    anon_other_write_enable=yes # 开放删除和重命名的权限
    

     【只开启上传下载权限】

    # cat /etc/vsftpd/vconf/hkey 
    local_root=/data/hkey
    write_enable=YES
    anon_world_readable_only=no
    anon_upload_enable=yes
    

    2. Centos7 vsftpd-虚拟用户配置

    ----------------------------------------------------
    系统版本:CentOS release 7.0
    vsftpd版本:vsftpd-3.0.2-22
    虚拟用户:hkey
    虚拟用户根目录:/data/hkey
    ----------------------------------------------------

    # yum install vsftpd -y
    # mkdir -pv  /data/hkey
    # sed -i -e 's/^anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/^write_enable=YES/#write_enable=YES/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/^#chroot_local_user=YES/chroot_local_user=YES/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/^pam_service_name=vsftpd/#pam_service_name=vsftpd/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/listen=NO/listen=YES/g' /etc/vsftpd/vsftpd.conf
    # sed -i -e 's/listen_ipv6=YES/#listen_ipv6=YES/g' /etc/vsftpd/vsftpd.conf
    # echo -e 'pam_service_name=vsftpd.vu
    virtual_use_local_privs=NO
    guest_enable=YES
    guest_username=vuser
    user_config_dir=/etc/vsftpd/vconf
    allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
    
    # mkdir /etc/vsftpd/vconf/
    
    # 一行用户名,一行密码,严格遵守这样的格式
    # cat /etc/vsftpd/vuser.txt
    hkey
    hkey123
    
    # 生成数据库
    # db_load -T -t hash  -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
    
    # 添加认证文件
    # cat /etc/pam.d/vsftpd.vu 
    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
    

    【开放所有权限】

    # cat /etc/vsftpd/vconf/hkey   
    
    local_root=/data/hkey # 设置登录后禁锢的根目录
    write_enable=yes # 开发写权限
    anon_world_readable_only=no # 开放下载权限
    anon_upload_enable=yes # 开放上传权限
    anon_mkdir_write_enable=yes # 开放创建目录的权限
    anon_other_write_enable=yes # 开放删除和重命名的权限
    

     【只开启上传下载权限】

    # cat /etc/vsftpd/vconf/hkey 
    local_root=/data/hkey write_enable=YES anon_world_readable_only=no anon_upload_enable=yes
  • 相关阅读:
    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:在函数‘_start’中: (.text+0x20):对‘main’未定义的引用
    W: 仓库 “http://ppa.launchpad.net/levi-armstrong/qt-libraries-trusty/ubuntu xenial Release” 没有 Release 文件。
    sudo apt-get常用命令
    Windows 下 MQTT 服务器搭建之Apollo
    sudo apt-get update报错E: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
    struct.error: cannot convert argument to integer解决办法
    PHP MySQL 创建数据库和表 之 Create
    PHP MySQL 连接数据库 之 Connect
    飞行的架构师和奔跑的程序员
    hdu 5610 Baby Ming and Weight lifting
  • 原文地址:https://www.cnblogs.com/hukey/p/9367910.html
Copyright © 2011-2022 走看看