使用vsftpd虚拟用户可以将权限限制在每个用户的根目录里,这样解决了匿名用户不能正对每个人进行权限控制的缺点,也避免了使用本地用户而产生的安全性问题。

一、 安装rpm包

vsftpd-2.2.2-6.el6_0.1.i686  

db4-4.7.25-17.el6.i686

db4-utils-4.7.25-17.el6.i686

vsftpd虚拟用户_第1张图片

二、创建用户数据库

1. 创建临时用户文件 /etc/vsftpd/ftp_pam_db.users, 内容格式如下:

用户1
用户1的密码
用户2
用户2的密码

vsftpd虚拟用户_第2张图片

2.  用db_load命令生成pam_userdb认证所需要的账号文件

[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/ftp_pam_d                                                                     b.users /etc/vsftpd/vsftpd.login.db

vsftpd虚拟用户_第3张图片

3.  配置PAM信息

   在/etc/pam.d下新建一个文件vsftpd.pam,内容如下

auth required pam_userdb.so db=/etc/vsftpd/vsftpd.login
account  required pam_userdb.so db=/etc/vsftpd/vsftpd.login

   vsftpd.login文件名后请不要加.db扩展名

vsftpd虚拟用户_第4张图片

4.  配置vsftpd账号

   vsftpd服务器允许在启动时指定配置文件,创建一个用于启动vsftpd服务的配置文件/etc/vsftpd/vsftpd.virtual.conf

listen=YES      允许监听,由vsftpd自己监听和处理IPv4端口的连接请求
listen_port=21   通过21端口监听
anonymous_enable=NO   不允许匿名用户访问
local_enable=YES       允许本地用户访问
chroot_local_user=YES      限制本地用户在自己的家目录中
guest_enable=YES           允许虚拟用户
guest_username=ftp         虚拟用户映射到本地用户“ftp”
max_clients=100            最多允许同时连接100个客户端
max_per_ip=10              每个IP最大连接数为10
pam_service_name=vsftpd.pam      指定PAM配置文件名
user_sub_token=$USER       自动进入虚拟用户名对应的家目录  
local_root=/var/ftp/virtual/$USER   指定每个虚拟用户账户家目录
#local_root=/var/ftp        指定默认的FTP目录,若启用上一条配置将无效    
xferlog_enable=YES          允许系统自动维护上传和下载的日志文件 
xferlog_file=/var/log/vsftpd.log   指定日志文件
xferlog_std_format=YES       传输日志文件将以标准xferlog格式书写

vsftpd虚拟用户_第5张图片

5.   根据以上配置创建虚拟用户家目录

vsftpd虚拟用户_第6张图片

6.   应用创建的配置文件启动vsftpd服务,若已经启动可先停止运行。

/usr/sbin/vsftpd  /etc/vsftpd/vsftpd.virtual.conf

vsftpd虚拟用户_第7张图片

7.  在客户端上登录测试

vsftpd虚拟用户_第8张图片