天天看點

搭建FTP+PAM+MySQL環境

搭建FTP+PAM+MySQL環境

1 搭建環境: CentOS6.5或CentOS6.7

[root@vhost3 ~]# uname -a
 Linux vhost3 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux      

2 yum安裝安裝MySQL、vsftpd,需要的依賴包,大多是系統自帶的,即使最小化安裝也會有

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

3 安裝pam

# 安裝依賴包

yum install -y pam-devel fprintd-pam pam_passwdqc pam      

# 編譯安裝pam,适用于yum安裝的MySQL

[root@localhost]#wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz
 [root@localhost]#tar xvf pam_mysql-0.7RC1.tar.gz
 [root@localhost]#cd pam_mysql-0.7RC1
 [root@localhost]# ./configure --with-openssl --with-pam-mods-dir=/lib/security/
 [root@localhost]# make && make install      

# 安裝完成後,會生成如下兩個檔案

/lib/security/pam_mysql.la  /lib/security/pam_mysql.so      

4 修改vsftpd配置檔案(參考)

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
 listen=YES
 pam_service_name=kdui_ftp        # pam認證的配置檔案
 userlist_enable=YES
 tcp_wrappers=YES
 guest_enable=YES    # 啟用虛拟使用者
 guest_username=kdui_ftp        # 虛拟使用者的權限是寄宿在作業系統的kdui_ftp這個使用者上的,這個使用者必須真實存在
 local_root=/home/dms/kdui/dmsdata/userBase/$USER    #指定使用者登入的家目錄,$USER是内置變量,表示使用者名
 user_sub_token=$USER
 virtual_use_local_privs=YES
 xferlog_file=/var/log/xferlog
 dual_log_enable=YES
 vsftpd_log_file=/var/log/vsftpd
 user_config_dir=/etc/vsftpd/user_config        #每個虛拟使用者的獨立配置檔案目錄,配置檔案和使用者同名      

5 根據vsftpd配置檔案配置系統環境

# 建立宿主賬号的家目錄

[root@localhost]#mkdir -p /home/dms/kdui/dmsdata/      

# 建立虛拟使用者宿主賬号

[root@localhost]# useradd -s /sbin/nologin -d /home/dms/kdui/dmsdata/userBase/ kdui_ftp      

# 建立虛拟使用者配置檔案目錄,(按上述配置檔案可以不建立)

[root@localhost]# mkdir -p /etc/vsftpd/user_config      

6 修改pam認證檔案

[root@localhost]# vim /etc/pam.d/kdui_ftp 
 #%PAM-1.0
 session       optional        pam_keyinit.so       force revoke
 auth required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=ftp table=ftpuser usercolumn=username passwdcolumn=password crypt=0
 account required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=ftp table=ftpuser usercolumn=username passwdcolumn=password crypt=0
 #            調用的子產品        資料庫使用者名    密碼      IP         庫名    表名      哪個字段作為使用者名   哪個字段作為密碼
 # crypt表示密碼是否加密以及加密方式,0表示明文,1表示使用UNIX的DES加密,2表示使用MySQL的password()函數,3表示密碼使用MD5加密      

7 配置MySQL資料庫

# 啟動資料庫      
[root@localhost]# /etc/init.d/mysqld start      

 # 連接配接資料庫

[root@localhost]# mysql -uroot      

 # 建庫

mysql> CREATE DATABASE IF NOT EXISTS `ftp` ;
  mysql> use ftp;      

 # 建表

mysql> CREATE TABLE IF NOT EXISTS `ftpuser` (
   `id` int(6) NOT NULL AUTO_INCREMENT,
   `username` varchar(20) NOT NULL,
   `password` varchar(20) NOT NULL,
   `status` int(1) NOT NULL DEFAULT '1',
   `level` int(1) NOT NULL DEFAULT '1',
   PRIMARY KEY (`id`)
   ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;      

# 插入兩條資料即ftp虛拟使用者

mysql> INSERT INTO `ftpuser` (`username`, `password`) VALUES ( 'aaa', '123');
 mysql> INSERT INTO `ftpuser` (`username`, `password`) VALUES ( 'bbb', '456');      

# 授權pam驗證用的mysql賬号

mysql>  grant select on ftp.ftpuser to ftp@localhost identified by '123456';
 mysql> FLUSH PRIVILEGES;
mysql>  quit;      

8 啟動ftp

[root@loaclhost]#/etc/init.d/vsftpd start      
下一篇: 注冊成功