前提:准备好一个yum源,我在后面配置中使用到的软件包下载路径:lftp 172.16.0.1:/pub/Sources/vsftpd
一、准备工作
1.安装开发环境和mysql数据库
  1. [root@localhost ~]#yum –y groupinstall “Development Tools”“Development Libraries”  
  2. [root@localhost ~]#yum –y install mysql-server mysql-devel  
2.安装pam_mysql-0.7RC1软件包
  1. [root@localhost ~]#lftp 172.16.0.1:/pub/Sources/vsftpd  
  2. lftp 172.16.0.1:/pub/Sources/vsftpd>get pam_mysql-0.7RC1  
  3. lftp 172.16.0.1:/pub/Sources/vsftpd>bye  
  4. [root@localhost ~]#tar xf pam_mysql-0.7RC1  
  5. [root@localhost ~]#cd pam_mysql-0.7RC1  
  6. [root@localhost pam_mysql-0.7RC1]#./configure –with-mysql=/usr –with-openssl  
  7. ####指定mysql数据库安装的路径,同时支持openssl加密功能  
  8. [root@localhost pam_mysql-0.7RC1]#make  
  9. [root@localhost pam_mysql-0.7RC1]#make install  
3.安装vsftpd服务
  1. [root@localhost ~]#yum –y install vsftpd 
4.启动mysqld服务
  1. [root@localhost ~]#service mysqld start  
  2. [root@localhost ~]#chkconfig –add mysqld   
  3. [root@localhost ~]#chkconfig mysqld on 
二、创建虚拟用户及账号
1.创建数据库及表
####在这里我们创建一个数据库vsftpd,在该数据库中创建存放虚拟用户名和用户密码的用户表users

基于vsftpd + pam + mysql实现虚拟用户访问机制_pam

2.为用户vsftpd授权

基于vsftpd + pam + mysql实现虚拟用户访问机制_实现虚拟用户访问机制_02

3.在users表中插入虚拟用户及密码

基于vsftpd + pam + mysql实现虚拟用户访问机制_实现虚拟用户访问机制_03 

三、配置vsftpd
1.创建pam认证的所需文件
  1. ###pam认证文件一般在/etc/pam.d下,为了让文件名看起来一目了然,在pam.d下创建vsftpd.mysql文件  
  2. [root@localhost ~]#vim /etc/pam.d/vsftpd.mysql  
  3. 添加如下内容:  
  4. auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0  
  5. account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0  
  6. ####创建的用户必须经过pam这个模块认证,否则就不会进行下面的操作  
  7. 保存退出  
2.创建虚拟用户映射的系统用户及对应的目录
  1. [root@localhost ~]#useradd –s /sbin/nologin –d /var/ftproot vuser  
  2. [root@localhost ~]#chmod go+rx /var/ftproot  
  3. ###使系统用户vuser的家目录任何人都有执行权限  
3.修改vsftpd的配置文件,使其支持mysql认证
  1. 在vsftpd配置文件中,一定要启用的选项:  
  2. anonymous_enable=YES  
  3. local_enable=YES  
  4. write_enable=YES  
  5. anon_upload_enable=NO 
  6. anon_mkdir_write_enable=NO 
  7. chroot_local_user=YES  
  8. 需要添加的选项:  
  9. guest_enable=YES  
  10. guest_username=vuser     ###启动来宾用户访问功能,并指定来宾用户为vuser  
  11. pam_service_name=vsftpd.mysql    ##指定pam认证的pam文件名  
  12. 保存退出  
4.启动vsftpd服务
  1. [root@localhost ~]#chkconfig –add vsftpd  
  2. [root@localhost ~]#chkconfig vsftpd on 
  3. [root@localhost ~]#service vsftpd start  
四、查看vsftpd服务的端口

基于vsftpd + pam + mysql实现虚拟用户访问机制_linux_04

五、配置虚拟用户的不同访问权限
此时使用虚拟用户登录到ftp服务中,还没有上传、下载、创建、删除等权限;要想使定义的虚拟用户拥有不同的访问权限,需要在配置文件目录下为每个用户提供单独的配置文件以定义其ftp服务访问权限,每一个虚拟用户的配置文件名可以同虚拟用户的用户名。
1.在vsftpd配置文件中为虚拟用户提供配置文件目录
  1. [root@localhost ~]#vim /etc/vsftpd/vsftpd.conf  
  2. 添加一项:  
  3. user_config_dir=/etc/vsftpd/vusers  
  4. 保存退出  
2.创建所需要的目录,并为虚拟用户提供配置文件
  1. [root@localhost ~]#mkdir /etc/vsftpd/vusers  
  2. [root@localhost ~]#cd /etc/vsftpd/vusers  
  3. [root@localhost vusers]#touch tom jerry  
  4. [root@localhost vusers]#vim jerry     ####在下面的演示中我只为jerry用户设置不同的访问权限,tom用户的访问权限设定方法和jerry的是相同的  
  5. 添加选项:  
  6. anon_upload_enable=YES     ###开启虚拟用户的上传功能  
  7. anon_mkdir_write_enable=YES   ###开启虚拟用户的创建功能  
  8. ####可以根据个人的需要添加相应的功能,每一项选项只对应一种功能实现  
六、测试结果
上传文件

基于vsftpd + pam + mysql实现虚拟用户访问机制_实现虚拟用户访问机制_05

创建目录

基于vsftpd + pam + mysql实现虚拟用户访问机制_vsftpd_06 

删除文件

基于vsftpd + pam + mysql实现虚拟用户访问机制_pam_07

在IE浏览器中测试使用虚拟用户登录ftp服务器

基于vsftpd + pam + mysql实现虚拟用户访问机制_实现虚拟用户访问机制_08

登录成功,并显示创建的目录

基于vsftpd + pam + mysql实现虚拟用户访问机制_vsftpd_09