IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    vsftpd配置虚拟用户

    bear发表于 2016-07-12 09:12:37
    love 0

    vsftpd的虚拟用户可以全部映射到一个真实的系统用户上, 对于有特殊权限要求的情况可以使用虚拟用户的方式. 这个方式的认证依赖于db4-utils, 需要使用它的db_load命令生成加密的认证文件. 本文基于CentoOS6 64bit.

    1, 安装和配置vsftpd

    $ yum install db4-utils vsftpd
    $ cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.ori
    $ touch /etc/vsftpd/chroot_list
    $ vim /etc/vsftpd/vsftpd.conf  #根据情况修改如下内容,也可以全部COPY
    anonymous_enable=NO
    #必须启用本地用户,因为虚拟用户是映射到www这个本地用户来访问的
    local_enable=YES
    write_enable=YES
    local_umask=022
    
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_file=/var/log/xferlog
    xferlog_std_format=YES
    
    idle_session_timeout=600
    data_connection_timeout=120
    
    chroot_local_user=YES
    #chroot_list_enable=YES
    #chroot_list_file=/etc/vsftpd/chroot_list
    
    listen=YES
    
    #指定新的pam认证文件
    pam_service_name=ftp.vuser
    
    #启用虚拟用户并将虚拟用户映射为本地www用户
    #这两项配置可以写在这里,也可以写在下面的/etc/vsftpd/virtual_conf/user1里
    #guest_enable=YES
    #guest_username=www
    
    #开启userlist,并禁止user_list文件中的用户登陆
    userlist_enable=YES
    userlist_deny=YES
    userlist_file=/etc/vsftpd/user_list
    
    tcp_wrappers=YES
    
    #虚拟用户的配置文件目录
    user_config_dir=/etc/vsftpd/virtual_conf
    

    2, 新建pam认证文件

    $ vim /etc/pam.d/ftp.vuser    #写入如下两行,如果是32位系统,把lib64改为lib
    auth    required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    

    其中/etc/vsftpd/vsftpd_login是用户账号密码数据库文件

    3, 建立虚拟用户数据库
    添加虚拟用户,用户名和密码各占一行

    $ vim /etc/vsftpd/vusers.list
    用户名1
    密码1
    用户名2
    密码2
    

    建立帐户密码数据库文件

    $ db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vsftpd_login.db
    

    添加用户只需要在/etc/vsftpd/vusers.list中添加两行(账号和密码), 并再次生成加密认证文件, 不需要重启vsftpd服务.

    4, 为单个虚拟用户建立配置文件, 将虚拟用户映射为本地用户www, 每一行首尾都不能有空格, 否则会报错

    $ vim /etc/vsftpd/virtual_conf/user1
    guest_enable=yes
    guest_username=www
    file_open_mode=0755
    anon_umask=022
    local_root=/home/wwwroot/user1
    anon_world_readable_only=NO
    #可以浏览和下载,yes只读
    write_enable=YES
    #可以上传(全局控制)
    anon_mkdir_write_enable=YES
    #允许创建目录
    anon_other_write_enable=YES
    #允许删除
    anon_upload_enable=YES
    

    然后即可在FTP客户端里尝试登陆.

    一些说明:
    1, 本文将所有的虚拟用户映射成了本地用户www, 请确保www的工作目录(/home/www)存在, 因为vsftp登陆时是会首先进入/home/www, 最后进入local_root指定的目录;
    2, www用户需要同时对/home/www目录和local_root指定的目录有读写权限;
    3, 新版vsftp禁止用户读写根目录, 因此使用FTP客户端登陆以后会发现其不能在根目录创建目录,这是正常的.



沪ICP备19023445号-2号
友情链接