试验环境red hat5.5(ip:192.168.0.228),vsftpd-2.3.5,mysql-5.1.45,pam_mysql-0.7RC1.tar.gz

软件的安装也可以使用yum,这样更方便编写脚本来实现自动安装

yum -y install vsftpd install mysql mysql-devel mysql-server

先安装vsftpd

tar zxvf vsftpd-2.3.5

cd vsftpd-2.3.5

vim builddefs.h

修改后的代码如下

  1. [root@defcon vsftpd-2.3.5]# cat builddefs.h  
  2. #ifndef VSF_BUILDDEFS_H 
  3. #define VSF_BUILDDEFS_H 
  4.  
  5. #define VSF_BUILD_TCPWRAPPERS 
  6. #define VSF_BUILD_PAM 
  7. #define VSF_BUILD_SSL 
  8.  
  9. #endif /* VSF_BUILDDEFS_H */ 

然后 make && make install

  1. # mkdir /etc/vsftpd 
  2. # cp vsftpd.conf /etc/vsftpd/ 
  3. # cp RedHat/vsftpd.pam /etc/pam.d/ 

安装mysql

  1. # groupadd mysql  
  2. # useradd -g mysql mysql  
  3.   
  4. # tar xzvf mysql-5.1.30.tar.gz  
  5. # cd mysql-5.1.30   
  6. # ./configure --prefix=/usr/local/mysql  
  7. # make  
  8. # make install  
  9. # cp support-files/my-medium.cnf /etc/my.cnf  
  10.  
  11.  
  12. # cd /usr/local/mysql  
  13. # bin/mysql_install_db --user=mysql    //初始化数据库。  
  14. # chown -R root  .  
  15. # chown -R mysql var  
  16. # chgrp -R mysql .  
  17. # bin/mysqld_safe --user=mysql &       //以mysql用户启动数据库。 

安装mysql-devel

# rpm -ivh --nodeps mysql-devel-5.0.45-7.el5.i386

安装pam_mysql

  1. # tar xzvf pam_mysql-0.7RC1.tar.gz 
  2.  
  3.  
  4. # cd pam_mysql-0.7RC1 
  5.  
  6. # ./configure --with-mysql=/usr/local/mysql          //指定了mysql的安装位置 
  7.  
  8. # make 
  9.  
  10. # make install 
  11.  
  12. # cp .libs/pam_mysql.so /lib/security/          //复制用于验证登陆的文件。 

建立映射到本地的用户

  1. # mkdir /var/ftp/  
  2.  
  3. # useradd -d /var/ftp ftp    
  4.  
  5. # chown root.root /var/ftp    //为了安全 
  6.  
  7. # chmod 755 /var/ftp  

mysql中建库并设置相应权限 

  1. mysql>create database mysql_vsftp; 
  2.  
  3. mysql>use mysql_vsftp; 
  4.  
  5. mysql>create table users(name char(20) binary,passwd char(20) binary); 
  6.  
  7. mysql>insert into users (name,passwd) values ('shanker','123'); 
  8.  
  9. mysql>grant select,insert on mysql_vsftp.users to ftp@localhost identified by '123456';   //授权ftp用户可以读mysql_vsftp数据库的users表。 
  10.  
  11. mysql>flush privileges;         //刷新权限设置。 
  12.  
  13. mysql>quit 

建立PAM认证信息

  1. [root@defcon vsftpd-2.3.5]# cat /etc/pam.d/vsftpd.pam  
  2. #%PAM-1.0 
  3. #auth       required    /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed 
  4. #auth       required    /lib/security/pam_unix.so shadow nullok 
  5. #auth       required    /lib/security/pam_shells.so 
  6. #account    required    /lib/security/pam_unix.so 
  7. #session    required    /lib/security/pam_unix.so 
  8. auth        required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=mysql_vsftp table=users usercolumn=name passwdpasswdcolumn=passwd crypt=0 
  9. account     required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=mysql_vsftp table=users usercolumn=name passwdpasswdcolumn=passwd crypt=0 

然后在/etc/vsftpd/vsftpd.conf后三行追加

  1. [root@defcon vsftpd-2.3.5]# tail -3 /etc/vsftpd/vsftpd.conf 
  2. pam_service_name=vsftpd.pam 
  3. guest_enable=YES 
  4. guest_username=ftp 

然后重启vsftpd ,测试用shanker 123登录成功。