兩臺主機實現:一臺做爲ftp服務器,一臺做爲mysql服務器
host1 : 192.168.1.107 vsftpd pam_mysql.so
host2 : 192.168.1.109 mariadb mariadb-server
一.準備數據庫
1.安裝數據庫並啓動mysql
~]# yum install mariadb mariadb-server -y
~]# systemctl start mariadb
2.建立vsftpd服務的虛擬數據庫及用戶列表
1)建立vsftp的數據庫
[none]> create database vsftpd;
[none]>use vsftpd
2)建立vsftp虛擬用戶表
[none]>create table vuser;
[none]>create table vuser (id int auto_increment primary key,username char(30),password char(50) binary);
3)將虛擬用戶的用戶名及密碼填入表中
[none]>insert into vuser(username,password)values('user1',password('centos')),('user2',password('linux'));
4)建立並受權用戶,做爲vsftp服務器鏈接數據庫服務的受權用戶
[none]>grant select on vsftpd.vuser to vsftpd@'192.168.1.107' identified by 'centos';
二.vsftp服務器端準備
1.編譯安裝模塊驅動pam_mysql.so
1) 準備編譯環境所須要的包
~]# yum install gcc gcc-c+ pam-devel mariadb-devel
2) 將驅動源碼文件解壓
~]# tar xvf /data/tools/pam_mysql-0.7RC1.tar.gz /data/tools
3) 進入模塊驅動源碼解壓後的文件夾
~]# cd /data/tools/pam_mysql-0.7RC1
4) 將模塊驅動安裝到正確的 路徑下/lib64/security
~]# ./configure --with-pam-mods-dir=/lib64/security
5) 進行編譯安裝
~]# make && make install
2.建立pam配置文件
~]# vim /etc/pam.d/vsftpd.mysql
# 認證依賴於pam_mysql.so 模塊,其他爲鏈接數據庫受權的用戶、密碼等信息
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.1.109
db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2
# accunt 驗證帳號必須是有效性,其中crypt=2 爲加密類型
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.1.109
db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2
3.修改vsftpd主配置文件,調用pam模塊配置
~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql #調用pam模塊
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES #將全部用戶映射到guest用戶,並映射到其家目錄
guest_username=vuser #guest命名爲vuser用戶
user_config_dir=/etc/vsftpd/vusers.d/ #虛擬用戶配置文件路徑
4.建立系統用戶指定其家目錄
~]# useradd -r -s /sbin/nologin/ -d /data/ftproot vuser
給系統用戶vuser設置權限,使的虛擬用戶和其餘用戶映射到vuser,有權限上傳文件或對文件增刪改的必要條件,還需知足vsftp配置才能實現
~]# setfacl -m u:vuser:rwx /data/ftproot/upload
5.建立虛擬用戶配置文件,配置每一個用戶特定屬性
如:user1能夠上傳文件而user2不能夠上傳文件
~]# vim /etc/vsftpd/vusers.d/user1
anon_upload_enable=YES #容許上傳文件
anon_mkdir_write_enable=YES #容許建立文件夾
anon_other_write_enable=YES #可刪除和可修改上傳的文件
local_root=/data/user1 #指定user1的家目錄
~]#vim /etc/vsftpd/vusers.d/user2
local_root=/data/user2 #指定user2的家目錄
三.啓動vsftp服務,實現mysql虛擬用戶認證
~]# systemctl start vsftpd