当前位置 博文首页 > vsftpd 虚拟账户,vsftpd高级用法之虚拟用户配置

    vsftpd 虚拟账户,vsftpd高级用法之虚拟用户配置

    作者:xiaoyingying 时间:2021-07-19 14:41

        需求:需要2个ftp用户访问不同的根目录,其他的访问ftp默认目录。
        2个用户为:test1、test2
        首先安装vsftpd,然后配置文件如下:
        vsftpd.conf:
        anonymous_enable=NO
        local_enable=YES
        write_enable=YES
        local_umask=022
        dirmessage_enable=YES
        xferlog_enable=YES
        connect_from_port_20=YES
        xferlog_std_format=YES
        chroot_local_user=NO
        chroot_list_enable=YES
        chroot_list_file=/etc/vsftpd/chroot_list
        listen=YES
        ftpd_banner=”welcometestFtpServer.”
        pam_service_name=vsftpd#设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsfptd文件的文件名
        userlist_enable=YES
        tcp_wrappers=YES
        local_root=/home/www/test/upload/
        virtual_use_local_privs=YES
        guest_enable=YES#表示是否开启vsftpd虚拟用户的功能,yes表示开启,no表示不开启。
        guest_username=www
        user_config_dir=/etc/vsftpd/vuser_conf#指定每个虚拟用户账号配置目录
        pasv_enable=YES
        pasv_min_port=40000
        pasv_max_port=40080
        pasv_promiscuous=YES
        创建虚拟用户配置目录:
        mkdir/etc/vsftpd/vuser_conf
        创建虚拟用户文件,把这些用户名和密码存放在一个文件中。该文件内容格式是:用户名占用一行,密码占一行。如下:
        [root@localhostvsftpd]#cat/etc/vsftpd/login.txt
        test1
        testone
        test2
        testtwo
        这个文件的虚拟用户和密码的文本文件无法被系统帐号直接调用,所以我们需要使用db_load命令生成db口令数据库文件,命令如下:
        db_load-T-thash-f/etc/vsftpd/login.txt/etc/vsftpd/login.db
        为了使服务器能够使用上述生成的数据库文件,对客户端进行身份验证,需要调用系统的PAM模块。PAM(PlugableAuthenticationModule)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
        我们现在切换到/etc/pam.d/目录下,编辑vsfptd文件。如下图:
        authrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/login
        accountrequired/lib64/security/pam_userdb.sodb=/etc/vsftpd/login
        auth是指对用户的用户名口令进行验证。
        accout是指对用户的帐户有哪些权限哪些限制进行验证。
        再后面的/lib64/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
        注意该函数会根据系统的位数而所在位置不同。
        如果是32bit系统,该文件所在位置是/lib/security/pam_userdb.so
        如果是64bit系统,该文件所在位置是/lib64/security/pam_userdb.so
        最后db=/etc/vsftpd/login则指定了验证库函数将到这个指定的数据库中调用数据进行验证。其实该文件指的是/etc/vsftpd/login.db文件。
        注意:db=/etc/vsftpd/login格式是这样的,去掉.db后缀。
        PAM配置完毕后,我们现在开始创建虚拟用户与系统用户对应的文件。切换到/etc/vsftpd/vuser_conf目录下,并创建test1文件。注意该文件名称一定要与login.txt中的虚拟用户要对应。比如现在login.txt文件有test1用户,那么在/etc/vsftpd/vuser_conf目录下创建一个文件名为test1的文件。
        [root@localhostvsftpd]#cat/etc/vsftpd/vuser_conf/test1
        local_root=/home/www/test1/upload/#表示使用本地用户登录到ftp时的默认目录
        virtual_use_local_privs=YES#虚拟用户和本地用户有相同的权限
        guest_username=www#表示的是设置FTP对应的系统用户为www
        write_enable=YES
        anon_umask=022
        以上配置完毕后,启动vsftpd服务完成。
        测试test1、test2ftp用户均可以正常登录,对应的根目录不同,均有创建和删除、上传权限。
        ftp虚拟用户,故不需要事先创建系统用户。
        关于chroot:
        1.chroot_local_user
        2.chroot_list_enable
        3.chroot_list_file
        可以通过如下两种方法来设置chroot,从而杜绝上述不安全的情况发生:
        (1)设置所有的本地用户执行chroot,只要将/etc/vsftpd/vsftpd.con文件中的chroot_local_user值置为YES,即chroot_local_user=YES。
        (2)设置指定的用户执行chroot,按照如下方法进行设置:
        chroot_local_user=NO
        chroot_list_enable=YES
        chroot_list_file=/etc/vsftpd.chroot_list
        设置后,只有/etc/vsftpd.chroot_list文件中指定的用户才能够执行chroot命令。
        原文链接:http://www.myjishu.com/?p=369
    下一篇:没有了