FTP服務(4)基於MySQL數據庫認證

基於MySQL數據庫認證

說明:本實驗在兩臺CentOS主機上實現,一臺作爲FTP服務器,一臺作數據庫服務器mysql

數據庫服務器和FTP服務器系統都是CentOS7sql

注意:若是是CentOS6系統請執行yum install vsftpd pam_mysql命令安裝鏈接組件數據庫

MariaDB服務器:vim

yum install mariadb-server -y systemctl start mariadb mysql MariaDB [(none)]> CREATE DATABASE vsftpddb; #準備數據庫 MariaDB [(none)]> use vsftpddb MariaDB [vsftpddb]> CREATE TABLE users(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL); #建立users表 MariaDB [vsftpddb]> DESC users; +----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| id       | int(11)  | NO   | PRI | NULL    | auto_increment |
| name     | char(50) | NO   |     | NULL    |                |
| password | char(48) | NO   |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+ MariaDB [vsftpddb]> GRANT ALL ON vsftpddb.* TO vsftpduser@'192.168.0.7' IDENTIFIED BY 'vsftpdpass';  #建立並受權用戶

vsftpd服務器:服務器

yum install mariadb -y mysql -uvsftpduser -pvsftpdpass -h192.168.0.8 #測試鏈接數據庫 MariaDB [(none)]> DESC vsftpddb.users; +----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| id       | int(11)  | NO   | PRI | NULL    | auto_increment |
| name     | char(50) | NO   |     | NULL    |                |
| password | char(48) | NO   |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+ MariaDB [(none)]> use vsftpddb MariaDB [vsftpddb]> INSERT INTO users(name,password) VALUES('user1',PASSWORD('user1pass')); #建立vsftpd的虛擬用戶 MariaDB [vsftpddb]> INSERT INTO users(name,password) VALUES('user2',PASSWORD('user2pass')); MariaDB [vsftpddb]> SELECT * FROM users; +----+-------+-------------------------------------------+
| id | name  | password                                  |
+----+-------+-------------------------------------------+
|  1 | user1 | *F20B90D5A0CED3757C51AE04CD4700AB9879E467 |
|  2 | user2 | *A9C95B38C9A88ECAE9128FD396059335E97CAA6E |
+----+-------+-------------------------------------------+

 

yum groupinstall "Development Tools" -y yum -y install mariadb-devel pam-devel vsftpd wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz tar xf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/ pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security pam_mysql-0.7RC1]# make && make installls /lib64/security/ |grep pam_mysql.so pam_mysql.so #pam模塊已安裝

 

vim /etc/pam.d/vsftpd.mysql auth required pam_mysql.so user=vsftpduser passwd=vsftpdpass host=192.168.0.8 db=vsftpddb table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpduser passwd=vsftpdpass host=192.168.0.8 db=vsftpddb table=users usercolumn=name passwdcolumn=password crypt=2

 

crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函數加密,3表示md5加密,4表示sha1加密函數

auth 表示認證
account 驗證帳號密碼正常使用
required 表示認證要經過
pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也能夠寫絕對路徑;後面爲給此模塊傳遞的參數
user=vsftpd爲登陸mysql的用戶
passwd=magedu 登陸mysql的的密碼
host=mysqlserver mysql服務器的主機名或ip地址
db=vsftpd 指定鏈接msyql的數據庫名稱
table=users 指定鏈接數據庫中的表名
usercolumn=name 當作用戶名的字段
passwdcolumn=password 當作用戶名字段的密碼
crypt=2 密碼的加密方式爲mysql password()函數加密sqlserver

useradd -r -s /sbin/nologin -d /data/mftp/ vuser mkdir -pv /data/mftp/pub/
chmod -w /data/mftp/ setfacl -m u:vuser:rwx /data/mftp/pub/ vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES guest_enable=YES guest_username=vuser pam_service_name=vsftpd.mysql #修改成使用pam_mysql模塊認證 systemctl restart vsftpd

 

vsftpd能夠在配置文件目錄中爲每一個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每一個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄能夠是任意未使用目錄,只須要在vsftpd.conf指定其路徑及名稱便可測試

vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d mkdir /etc/vsftpd/vusers.d/
touch /etc/vsftpd/vusers.d/{user1,user2} vim /etc/vsftpd/vusers.d/user1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/ftproot  #登陸目錄改變至指定的目錄
相關文章
相關標籤/搜索