• vsftp 虚拟用户测试


    1、创建用于进行FTP验证的帐号密码数据库文件,单数行为账户名,偶数行为密码。
    [root@rhel1 vsftpd]# vi /etc/vsftpd/vuser.list
    user1
    123456
    user2
    123456
    user3
    123456
    user4
    123456
    user5
    123456

    2、使用db_load命令用HASH算法将这个原始的明文信息文件转换成数据库文件,并且再把数据库文件权限调小一些(避免其他人能看到数据库文件的内容),然后再把原始的明文信息文件删除掉。
    [root@rhel1 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
    [root@rhel1 vsftpd]# chmod 600 /etc/vsftpd/vuser.db
    [root@rhel1 vsftpd]# file vuser.db
    vuser.db: Berkeley DB (Hash, version 9, native byte-order)
    [root@rhel1 vsftpd]# rm -f vuser.list
    [root@rhel1 vsftpd]#

    3、创建一个用来让虚拟用户映射的系统本地用户,简单来说就是让虚拟用户默认登陆到这个本地用户的家目录中,创建的文件属性也都归属于这个本地用户,避免本地Linux系统无法处理这种虚拟用户创建的文件属性权限。
    # useradd scott -s /bin/false

    4、建立用户支持虚拟用户的PAM认证文件。
    在vsftpd服务程序主配置文件中默认就写有参数pam_service_name=vsftpd,表示登录FTP服务器时是根据/etc/pam.d/vsftpd的文件内容进行安全认证的
    修改原来的PAM文件,用于虚拟用户验证。其中PAM文件内的db=参数为刚刚用db_load生成出的账户密码数据库文件的路径,但不用写后缀(添加最后两行,其它全部注释):
    [root@rhel1 pam.d]# vi /etc/pam.d/vsftpd
    #%PAM-1.0
    #session optional pam_keyinit.so force revoke
    #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    #auth required pam_shells.so
    #auth include password-auth
    #account include password-auth
    #session required pam_loginuid.so
    #session include password-auth
    auth required pam_userdb.so db=/etc/vsftpd/vuser
    account required pam_userdb.so db=/etc/vsftpd/vuser

    5、在vsftpd服务程序主配置文件中修改PAM支持文件
    # vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO  #禁止匿名用户登录
    local_enable=YES   #允许本地用户登录
    guest_enable=YES    #开启虚拟用户模式
    guest_username=scott #第3步创建的用于虚拟帐号映射的系统用户名
    allow_writeable_chroot=YES #允许禁锢的FTP根目录可写而不拒绝用户登入请求。
    write_enable=YES  #虚拟用户有写权限(上传、下载、删除、重命名)。
    pam_service_name=vsftpd #指定pam文件,对应/etc/pam.d/vsftpd这个文件名。

    user_config_dir=/etc/vsftpd/vuser_conf  #指定虚拟用户配置文件的路径(可以给每个虚拟用户创建一个单独的配置文件)
    virtual_use_local_privs=YES  #让虚拟用户和本地用户scott拥有相同的权限(虚拟用户登录后,默认目录为/home/scott)

    说明:

    当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
    
    当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
    
    当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
    
    当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
    anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
    
    当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
    anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
    
    当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
    anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
    
    当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
    anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
    
    当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
    anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。

    6、启SELinux域的允许策略

    # setsebool -P ftpd_full_access=on

    7、为虚拟用户单独创建配置文件

    # mkdir -p /etc/vsftpd/vuser_conf   

     可以在该目录下为每个虚拟用户创建单独的配置文件。

    比如,为user1用户指定目录为/ftpdata/user1,则添加配置文件如下

    [root@rhel1 user1]# vi /etc/vsftpd/vuser_conf/user1

    local_root=/ftpdata/user1

    同样,也可以为其它用户创建配置文件来对用户进行限制。

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

    问题:第5步已设置允许本地帐号登录,但是创建的其它系统帐号无法登录ftp服务,只能用虚拟帐号登录,不知道啥原因。

    # vim /etc/vsftpd/vsftpd.conf

    local_enable=YES   #允许本地用户登录

  • 相关阅读:
    mybatis 对string类型判断比较 group case when then 综合
    利用Apache shiro SimpleHash 加密字符串
    linux下用rpm 安装jdk
    运行java程序的时候出现Exception in thread "main" java.lang.UnsupportedClassVersionError:
    linux如何查看端口被哪个进程占用?
    Linux如何查看JDK的安装路径
    Linux中查看jdk版本
    linux修改/etc/profile权限
    db2,oracle,mysql ,sqlserver限制返回的行数
    什么是T-SQL
  • 原文地址:https://www.cnblogs.com/rusking/p/7575044.html
Copyright © 2020-2023  润新知