虚拟账户的 vsftpd FTP 服务搭建 
 
 环境centos6.6 
 
 
 
 

  实现效果 

 
搭建一个基于虚拟用户的 FTP 站点, 
 
 

  虚拟用户:uplad 密码:upload ,可以上传下载 

 

  要求三个虚拟用户 vuser1、vuser2、vuser3 登录后 
 
 权限分别是:vuser1 能下载不能上传,vuser2 能上传不能下载,vuser3 既能上传也能下载。 
 
 
 yum install -y vsftpd 
 
 [ 
 root@server vsftpd]# 
  cd /etc/vsftpd 
 
 [ 
 root@server vsftpd]#  
 vi virtualuser.txt 
 

  upload 

 

  upload 
 
 vuser1 
 
 123456 
 
 vuser2 
 
 123123 
 
 vuser3 
 
 123456 
 
 //把新建的文本文件 virtualuser.txt 转换为 db 文件,安装 db4-utils 包 
 
[root@server vsftpd]#yum install -y db4-utils
 [root@server vsftpd]#db_load -T -t hash -f virtualuser.txt /etc/vsftpd/virtualuser_login.db 
 
 //这条命令生成用户数据库 
 

  #写个脚本,每次添加账号后,执行以下 

 

  [ 
 root@LFTp-Svn01 
  vsftpd]# 
  cat set_new_user.sh  
 
 #!bin/bash 
 

  datestmp=`date +%Y%m%d%H%M` 

 

  echo 'add user in virtualuser.txt' 

 

  db_load -T -t hash -f virtualuser.txt /etc/vsftpd/virtualuser_login.db 

 
chmod 600 /etc/vsftpd/virtualuser_login.db  
 

  ls -l /etc/vsftpd/virtualuser_login.db 

 
cp chroot_list backup/chroot_list_$datestmp 
 

  ls vuserconfig >chroot_list 

 
[root@server vsftpd]# chmod 600 virtualuser_login.db  
 
 //设置认证文件只对用户可读可写 
 
 [ 
 root@server pam.d]# 
 cd /etc/pam.d 
 

  /*配置 PAM 文件 
 
 //为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的 
 
 PAM 模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安 
 
 装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。 PAM 模块 
 
 配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件, 
 
 并以服务名称命名。 
 

 //修改 vsftpd 对应的 PAM 配置文件/etc/pam.d/vsftpd,可将原配置注释,然后作如下配置 
 
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_def 
 
[root@server pam.d]# vim /etc/pam.d/vsftpd (64位系统) 
 
 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login 
 
 account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login 
 
 
 
 

  [ 
 root@server pam.d]# vim /etc/pam.d/vsftpd.vu (32位系统) 
 
 auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login   
 
 account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser_login  
 

 //auth 是指对用户的用户名口令进行验证。 
 
 accout 是指对用户的帐户有哪些权限哪些限制进行验证。 
 
 /lib/security/pam_userdb.so 表示该条审核将调用 pam_userdb.so 这个库函数进行。 
 
 最后的 db=/etc/vsftpd/virtualser_login 则指定了验证库函数将到这个指 
 
 定的数据库中调用数据进行验证。 
 

[root@server vsftpd]# useradd virtualuser 
 
 //建立虚拟用户所对应的本地真实用户(可以创建任意用户) 
 

 //重新修改 vsftpd.conf 配置文件 
 
 [ 
 root@newsales3 vsftpd]#  
 grep -v ^# /etc/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           #日志写到/var/log/xferlog,日志不显示中文,包含的内容更多,但是都是缩写,不直观 
 
/var/log/vsftpd.log,且更加易读 
 
     chroot_list_enable=YES            #YES的时候,启用chroot 列表。 
 

      chroot_list_file=/etc/vsftpd/chroot_list        #在该目录中的用户禁止切换目录,锁定在家目录 
 
 listen=YES  
 
 
 
 pam_service_name=vsftpd       #安全审计模块名对应/etc/pam.d/vsftpd 
 
 userlist_enable=YES 
 
 tcp_wrappers=YES 
 
 
 
 

  #set for  late  8 hour 

 

  use_localtime=yes 

 

   #pasv_enable=YES                        ##开启被动模式 
 
 
 

   pasv_min_port=30000                    ##被动模式最小端口 
 
 
 

   pasv_max_port=31000                    ##被动模式最大端口 
 
 

  ############### Virtual user  ############ 

 

  guest_enable=yes 

 

  guest_username=virtualuser            #虚拟用户映射的真实系统用户是 

 

  virtual_use_local_privs=yes                #虚拟用户是否有映射的系统真实用户的权限 

 

  user_config_dir=/etc/vsftpd/vuserconfig    #设置虚拟用户配置文件的目录 

 

  ############### Virtual user  ############ 

 
 
 
 
 
 
 
 
 cd /etc/vsftpd/ 

 
 
 mkdir -p /etc/vsftpd/vuserconfig    /etc/vsftpd/backup 

 
 
 touch /etc/vsftpd/chroot_list  
 
在没有建立虚拟账户配置文件测试默认虚拟用户的权限: 
 
 [ 
 root@server ~]#  
 lftp  192.168.0.254 
 

  lftp 10.12.8.30:~> 
 user vuser1 123456 
 
 lftp  
 vuser1@192.168.0.254:/>  
 mkdir test 
 
 //创建一个目录作为测试 
 
 
 
 

  到此,vsftpd 已经可以使用 

 
 
 
 
 
 
 

  ################################################ 

 

  #下面来创建虚拟用户的权限设置 

 

  创建一个有读写权限的账号 

 
 
 cd /etc/vsftpd
cat vuserconfig/upload 

 

  local_root=/home/virtualuser/upload/soft 

 

  write_enable=yes 

 

  download_enable=yes 

 
 
 
 创建对应的家目录,并重启服务即可。 
 
mkdir -p /home/virtualuser/upload/soft
 
chown -R virtualuser.virtualuser  /home/virtualuser
 
 
 
 
#生效账号密码
 
sh set_new_user.sh 
 
#重启vsftpd服务
 
/etc/init.d/vsftpd  restart
 

 
然后即可登录
 

  ################################################ 

 
 
 
 建立虚拟帐号配置文件 
 
     在 user_config_dir 指定路径下,建立与虚拟帐号同名的配置文件并添加相应 
 
 的配置字段,配置文件名称一定要和虚拟用户名相同。默认情况下虚拟用户的配 
 
 置文件会继承全局配置文件中的语句,如果冲突,虚拟用户配置文件有效。 
 
 write_enable=yes       
  #默认允许在文件系统写入权限 
 
 download_enable=yes 
  #默认允许下载 
 
 [ 
 root@server ~]# 
 su - virtualuser 
 
 [ 
 virtualuser@server ~]$  
 mkdir vuser1 vuser2 vuser3 
 
 //创建三个虚拟用户的根目录,此时在virtualuser的家目录中, 
 
 [virtualuser @server ~]$ exit  
 
    
 
 //vuser1 只能上传权限配置 
 
 [ 
 root@server vuserconfig]# 
  cat vuser1 
 
 local_root=/home/virtualuser/vuser1 
 
 write_enable=YES 
 
 download_enable=NO 
 
 //vuser2 只能下载配置 
 
 [ 
 root@server vuserconfig]#  
 cat vuser2 
 
 local_root=/home/virtualuser/vuser2 
 
 write_enable=NO 
 
 download_enable=yes 
 
 //vuser3 上传下载等配置 
 
 [ 
 root@server vuserconfig]#  
 cat vuser3 
 
 local_root=/home/virtualuser/vuser3 
 
 //然后依次登录vuser1,2,3 进行测试 
 
 [ 
 root@server ~]# 
  lftp -u vuser1 192.168.0.254 
 
 
 
 

  ######################## 

 

  禁止用户切换目录 

 

  修改配置文件如下,然后添加禁止切换目录 的用户名到这个文件即可 /etc/vsftpd/chroot_list。 

 

       chroot_list_enable=YES            #YES的时候,启用chroot 列表。 
 
 
 

       chroot_list_file=/etc/vsftpd/chroot_list        #在该目录中的用户禁止切换目录,锁定在家目录