實現基於mysql驗證的vsftpd虛擬用戶 (centos6)mysql
說明:本實驗在兩臺Cento主機上實現,一臺做爲FTP服務器,一臺做爲數據庫服務器linux
FTP服務器ip:172.16.250.90sql
Mysql服務器ip:172.16.252.16數據庫
1、安裝ftp服務器安裝包vim
yum install vsftpd pam_mysqlcentos
2、數據庫服務器建立虛擬用戶賬號bash
一、創建虛擬用戶數據庫 服務器
mysql> create database vsftpd; mysql> show tables; mysql> grant select on vsftpd.* to vsftpd@'172.16.%.%' identified by 'magedu'; mysql> flush privileges;
二、創建user表ide
mysql> use vsftpd; mysql> CREATE TABLE USER (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,NAME CHAR(50) BINARY NOT NULL,PASSWORD CHAR(48)BINARY NOT NULL); mysql> desc user;
三、添加測試虛擬用戶函數
mysql> inset into user(name,password) values('wang',password('magedu')); mysql> inset into user(name,password) values('mage',password('magedu')); mysql>select * from user;
3、在ftp服務器上配置vsftpd服務
一、在ftp服務器上創建pam認證所需文件
[root@localhost log]# vim /etc/pam.d/vsftpd.mysql auth required /lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=172.16.252.16 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2 #此處與auth行爲一行 account required /lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=172.16.252.16 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2 #此處與account行爲一行
auth 表示認證
account 驗證賬號密碼正常使用
required 表示認證要經過
pam_mysql.so 模塊此處也能夠寫爲相對路徑,若該模塊爲編譯安裝路徑變化此處必須寫爲絕對路徑。其後
參數皆爲給此模塊傳遞參數。
user=vsftpd 登陸mysql的用戶
passwd=magedu 登陸mysql的密碼
host=172.16.252.16 mysql服務器地址(如mysql與vftpd爲同一服務器則爲localhost便可)
db=vsftpd 鏈接mysql的那個庫
table=users 鏈接庫裏的哪個表
usercolumn=name 看成用戶名字段的字段名稱
passwdcolumn=password 看成密碼字段的字段名稱
crypt=2 密碼的加密方式爲mysql password() 函數加密
注意 crypt爲加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password() 函數加密 ,3表示
md5加密,4表示shd1加密。
二、創建相應用戶和修改vsftpd文件
useradd –s /sbin/nologin –d /var/ftproot vuser
修改vsftp配置文件
anonymous_enable=YES
guest_enbale=YES #開啓虛擬用戶登陸
guest_username=vuser #指定虛擬用戶映射的系統用戶身份
pam_service_name=vsftpd.mysql #指定使用mysql認證方式登陸 此項修改後原系統用戶將沒法登陸。
4、測試
此時虛擬用戶wang及mage均可正常登陸。
注意配置過程當中selinux 策略
禁止selinux 或執行如下命令
setsebool -P ftpd_connect_db 1
setsebool -P ftp_home_dir 1
chcon -R -t public_content_rw_t /var/ftproot/