vsftp虚拟用户通过pam和mysql认证

首先配置好编译环境,另安装mysql-5.5.25使用cmake编译安装,先按编译工具

  
  
  
  
  1. # tar xf cmake-2.8.8.tar.gz   
  2. # cd cmake-2.8.8  
  3. # ./bootstrap   
  4. # make && make install 


1、安装mysql:

  
  
  
  
  1. # groupadd -r mysql  
  2. # useradd -g mysql -r -s /sbin/nologin -M -d /data/mysql mysql  
  3.  
  4. # tar xf mysql-5.5.25a.tar.gz   
  5. # cd mysql-5.5.25a  
  6. # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 指定mysql安装路径  
  7. -DMYSQL_DATADIR=/data/mysql \         存储数据路径  
  8. -DSYSCONFDIR=/etc \                   配置文件路径  
  9. -DWITH_INNOBASE_STORAGE_ENGINE=1 \    安装INNOBASE存储引擎  
  10. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \     安装ARCHIVE存储引擎  
  11. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   安装BLACKHOLE存储引擎  
  12. -DWITH_READLINE=1 \                   使用绑定的readline  
  13. -DWITH_SSL=system \                   支持SSL功能  
  14. -DWITH_ZLIB=system \                  支持ZLIB压缩库  
  15. -DWITH_LIBWRAP=0 \                    关闭LIBWRAP支持  
  16. -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \  套接字的位置  
  17. -DMYSQL_USER=mysql \                  MYSQL用户  
  18. -DDEFAULT_CHARSET=utf8 \              指定utf8字符集  
  19. -DDEFAULT_COLLATION=utf8_general_ci   指定排序规则  
  20.  
  21. # make && make install 

2、配置mysql

  
  
  
  
  1. # cd /usr/local/mysql/  
  2. # cp support-files/my-large.cnf /etc/my.cnf  
  3. #  cp support-files/mysql.server /etc/rc.d/init.d/mysqld  
  4. # chmod +x /etc/rc.d/init.d/mysqld  
  5.  
  6. # chown -R .mysql .  
  7. # scripts/mysql_install_db --user=mysql --datadir=/data/mysql  
  8.  
  9. # vim /etc/my.cnf   
  10. thread_concurrency = 2 
  11. datadir = /data/mysql  
  12.  
  13. # service mysqld start  
  14.  
  15. # vim /etc/ld.so.conf  
  16. /usr/local/mysql/lib  
  17. # ldconfig   
  18. # export PATH=$PATH:/usr/local/mysql/bin/ 


3、配置mysql数据库

  
  
  
  
  1. 新建vsftpd库  
  2. mysql> create database vsftpd;  
  3. 授权vsftpd用户,并设置密码  
  4. mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';  
  5. mysql> grant select on vsftpd.* to [email protected] identified by '123456';   
  6. 建立表  
  7. mysql> use vsftpd;  
  8. mysql> create table users ( id int AUTO_INCREMENT NOT NULL PRIMARY KEY, name char(20) NOT NULL UNIQUE KEY, password char(48) NOT NULL );  
  9. 添加用户  
  10. mysql> insert into users(name,password) values ('redhat',password('redhat')) , ('gentoo',password('gentoo'));  
  11. mysql> flush privileges;  
  12.  


4、安装pam

  
  
  
  
  1. # tar xf pam_mysql-0.7RC1.tar.gz   
  2. # cd pam_mysql-0.7RC1  
  3. # ./configure --with-mysql=/usr/local/mysql/ --with-openssl  
  4. #  make  
  5. #  make install 

5、安装vsftpd

  
  
  
  
  1. # yum -y install vsftpd  
  2.  
  3. 新建vsftp的pam认证文件  
  4. # vim /etc/pam.d/vsftpd.mysql  
  5. auth    required        pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
  6. account required        pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
  7.  
  8. 注:这里指定的是和mysql数据库有关的user=vsftpd passwd=123456是这vsftpd登录mysql的用户名密码  
  9. db=vsftpd table=users usercolumn=name passwdcolumn=password分别指的是之前建立的vsftpd库,users表,name字段和password字段,crypt=2是指定mysql添加数据时password是加密的方式  
  10.  
  11. 修改vsftp配置文件,最后添加如下3行  
  12. # vim /etc/vsftpd/vsftpd.conf   
  13. guest_enable=YES 
  14. guest_username=ftp 
  15. pam_service_name=vsftpd.mysql  
  16.  
  17. # service vsftpd restart 

6、测试,可以登录:

7、出现的问题:
# tail /var/log/messages
Jul 19 12:26:24 bogon vsftpd: PAM adding faulty module: /lib/security/pam_mysql.so
Jul 19 12:26:41 bogon vsftpd: PAM unable to dlopen(/lib/security/pam_mysql.so)
Jul 19 12:26:41 bogon vsftpd: PAM [error: libmysqlclient.so.18: cannot open shared object file: No such file or directory

这里的问题有两种可能一是pam_mysql.so的路径不再/lib/security/下,解决方法更改路径,或在vsftpd.mysql中定义绝对路经,二是找不到libmysqlclient.so.18的文件,这个是mysql的库文件中的文件,也是路径问题,在/etc/ld.so.conf中指定mysql的库即可

你可能感兴趣的:(vsftpd,+,+,pam,mysql-5.5.25)