• 通过vsftpd实现虚拟用户登录,不同的用户登录不同的目录,使用不同的权限


    虚拟用户:
      所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录
        各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
      虚拟用户帐号的存储方式:
    文件:编辑文本文件,此文件需要被编码为hash格式
    奇数行为用户名,偶数行为密码
    db_load -T -t hash -f vusers.txt vusers.db
    关系型数据库中的表中:
    实时查询数据库完成用户认证
    mysql库:pam要依赖于pam-mysql
    /lib64/security/pam_mysql.so
    /usr/share/doc/pam_mysql-0.7/README

    一、创建用户数据库文件

    vim /etc/vsftpd/vusers.txt
    ftpuser1
    centos
    ftpuser2
    China123
    
    cd /etc/vsftpd/
    db_load -T -t hash -f vusers.txt vusers.db
    chmod 600 vusers.db

    二、创建用户和访问FTP目录

    useradd -d /var/ftproot -s /sbin/nologin vuser
    chmod a=rx /var/ftproot/
    
    centos7 还需要执行以下操作:
    chmod -w /var/ftproot/
    mkdir /var/ftproot/upload
    setfacl -m u:vuser:rwx /var/ftproot/upload

    三、创建pam配置文件

    vim /etc/pam.d/vsftpd.db
    auth required pam_userdb.so db=/etc/vsftpd/vusers
    account required pam_userdb.so db=/etc/vsftpd/vusers

    这个意思表示调用验证模块pam_userdb.so    验证的时候是由这个文件定义的/etc/vsftpd/vusers,文件名vsftp.db可以自定义,vusers 写的时候可以不带后缀,目前配置文件中还没有调用我们刚刚新建的vsftpd.db 模块

    四、指定pam配置文件

    vim /etc/vsftpd/vsftpd.conf
    pam_service_name=vsftpd.db
    guest_enable=YES
    guest_username=vuser

    guest_enable=YESguest_username=vuser这两行表示将操作系统用户映射成vuser,pam_service_name=vsftpd.db这行就表示使用第三步的配置文件

    通过ftp测试,报错如下的话,是因为ftp不能运行在一个可写的根上,就是根目录不能有写权限

    ftp 192.168.1.7
    Connected to 192.168.1.7 (192.168.1.7).
    220 (vsFTPd 3.0.2)
    Name (192.168.1.7:root): ftpuser1
    331 Please specify the password.
    Password:
    500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    chmod 555 /var/ftproot/ #这行只是不能对/var/ftproot/这个有写权限,可以直接新建个目录,这样就可以了。

    修改权限为555表示所有人只有读和执行权限,没有写的权限
    这里的根不是真正的系统根,而是用户的家目录,将用户的家目录映射成根,在这里其他用户,登录进去看到的文件和权限都是一样的,

    创建upload 文件夹,并对其设置vuser 用户,读写执行权限

    mkdir upload
    
    setfacl -m u:vuser:rwx upload

    对每个用户授权不同的访问权限

    1、修改配置文件

    vim /etc/vsftpd/vsftpd.conf

    2、

    user_config_dir=/etc/vsftpd/vusers.d/

    这行表示每个用户有独有的配置文件,配置文件,存放在/etc/vsftpd/vusers.d/这个下,

    3、创建配置文件存放位置

    mkdir /etc/vsftpd/vusers.d

    4、新建文件,和虚拟用户名一样

    vim ftpuser1
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

    这里给的权限是能上传和下载的,而ftpuser2 我是没有创建文件,所以还是和之前的权限一样,只能下载,不能上传

    5、重启vsftpd服务

    systemctl restart vsftpd

    对每个用户登录之后,查看到的目录各不相同

    1、新建一个文件夹,

    mkdir /var/ftproot2

    2、新建一个ftpuser2的配置文件

    vim ftpuser2
    
    local_root=/var/ftproot2

    登录目录改变至指定的目录

    ------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------- 博客均为个人笔记,无所追求,仅供参考~~~ QQ--2382990774
  • 相关阅读:
    eclipse下jsp文件报错解决方法
    使用vscode搭建本地的websocket
    tomcat的首次登录配置
    tomcat配置报错解决方法 The jre_home environment variable is not defined correctly
    cento升级openssl依旧显示老版本
    Centos6安装mysql5.7最新版
    Neutron服务组件
    网络OSI 7层模型
    Kubernetes的核心技术概念和API对象
    Xen 虚拟化技术
  • 原文地址:https://www.cnblogs.com/alexlv/p/14848191.html
Copyright © 2020-2023  润新知