zoukankan      html  css  js  c++  java
  • 通过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
  • 相关阅读:
    NexusFile(文件管理器)
    塔式、机架式、刀片式服务器的区别和特点
    使用dsoframer控件出现"Unable to display the inactive document. Click here to reactivate the document."的问题 .
    类型“Microsoft.Office.Interop.Word.ApplicationClass”错误 4317 无法嵌入互操作类型
    解决C#导出excel异常来自 HRESULT:0x800A03EC的方法 .
    c# winfrom 皮肤切换 控件 IrisSkin2.dll 使用
    巧用花生壳将局域网内的FTP和www服务器发布到互联网
    Windows Server 2003 动态网站IIS设置(图)
    NAT原理简介、各种 ADSL Modem 及路由器的端口映射方法
    UML用例图
  • 原文地址:https://www.cnblogs.com/alexlv/p/14848191.html
Copyright © 2011-2022 走看看