vsftp的虚拟用户配置

我的linux学习笔记,简记

    对于我来说又是一个小小的进步,对于linux中的ftp服务一直处在迷糊状态。因为用虚拟用户的话会让服务器更为安全,所以配置虚拟用户提升服务器的安全性来说是很有必要的,并且在拓展用户方面也比较很容易。
    首先要明白的是vsftp的虚拟用户是不能完全独立于系统的,必需是像寄居蟹一样寄宿在系统的一个用户上,使用的权限也是系统中的一个用户的权限,但是这个系统用户不能给予登陆系统的权限,并给定一个目录,之后所有虚拟用户的根目录都在这个目录之下。
    建立一个用户,且给定目录:
              useradd -d /var/ftp/virtroot vusers -s /sbin/nologin  (nologin是禁止此用户登陆系统,不管是ssh还是shell下。)
          之后,要设计好虚拟用户的用户名,并建立相应的文件夹,如设计第一个用户为vuser1,则:
              mkdir -p /var/ftp/virtroot/vuser1/vuroot
   如上,virtroot就是ftp的目录了,在此目录下创建虚拟用户根目录(vuser1),根目录下创建虚拟用户有权限的可操作的目录(vuroot)。
    要对以上各目录设置权限:
            chown -R vusers:vusers /var/ftp/virtroot
             chown 500 /var/ftp/virtroot/vuser1  

    要确定pam_userdb.so是否存在,及所以位置,一般如下:
            ls -l /lib64/security/pam_userdb.so

    虚拟用户需要配置才可以使用:
        需要在vsftpd配置目录下(/etc/vsftpd)建立一个虚拟用户列表文件,名为vuserlist,奇数行为用户名,偶数行为用户的密码,如以上vuser1用户则写成:
      vuser1
      123456

  用系统工具db_load把用户列表文件(vuserlist)生成db文件。
      db_load -T -t hash -f /etc/vsftpd/vuserlist /etc/vsvftpd/vuserlist.db
     chmod 600 /etc/vsftpd/vuserlist.db (这里给600权限相对会比较安全)
      
  需要修改PAM验证,即修改/etc/pam.d/vsftpd参数,这个文件是对应vsftpd主配置文件中pam_service_name=vsftpd相对应的,打开/etc/pam.d/vsftpd,注释掉所有项,并在最后加上以下两行:
     auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
保存退出即可。

到这一步,需要创建虚拟用户的配置文件了,如下:
      mkdir /etc/vsftpd/vuser_conf/
      vim /etc/vsftpd/vuser_conf/vuser1
   在vuser1中添加配置信息为:
   local_root=/var/ftp/virtroot/vuser1
   anon_upload_enable=YES
   anon_world_readable_only=NO
   anon_mkdir_write_enable=YES
   anon_other_write_enable=YES
记得保存。

  vsftpd的主配置文件也要做配置,如下:
  listen=YES
  listen_ipv6=NO
  chroot_local_user=YES
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list  (chroot_list必需要存在,没有就用vim或touch命令创建一个,可以为空文件。)
  pam_service_name=vsftpd   (如果/etc/pam.d/vsftpd没有改vsftpd的文件名,这里就保持不变。)
  guest_enable=YES (开启虚拟用户)
   virtual_use_local_privs=YES  (设置虚拟用户可以用本地用户权限)
  guest_username=vusers   (指定虚拟用户的宿主用户,借用宿主的在系统中的权限。)
  user_config_dir=/etc/vsftpd/vuser_conf  (指定虚拟用户的配置文件)
   pasv_enable=YES   (开启被动模式)
   pasv_min_port=40000    (给ftp服务器设置被动模式下端口的范围,建议高位的端口相对安全性好点。这里就最小端口)
   pasv_max_port=41000    (设置最大端口)
   pasv_address=X.X.X.X     (针对于公网的环境设置,填写服务器的公网IP,在局域网可以注释掉)


 如果要增加虚拟用户,首先要在/etc/vsftpd/vuserlist文件内增加虚拟用户,并用pam_userdb.so重新生成一次。
其次要在/etc/vsftpd/vuser_conf/下新建一个以虚拟用户名为名的配置文件,设定好local_root=文件路径。