vsftpd虛擬用戶認證配置(vsftpd+pam+mysql)

1、準備所須要的程序包mysql

mysqlsql

pam_mysql數據庫

vsftpdvim

2、開始安裝windows

[root@localhost ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql
// 注意:pam_mysql由epel源提供,epel源須要自行設置

3、建立虛擬用戶帳號bash

一、建立數據庫及存儲用戶的表ide

[root@localhost ~]# service mysqld start
// 啓動mysql服務
[root@localhost ~]# mysql
mysql> create database vsftpd;    // 建立名爲vsftpd的數據庫
Query OK, 1 row affected (0.00 sec)

mysql> use vsftpd   // 切換當前數據庫爲vsftpd
Database changed
mysql> create table users(id int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,name VARCHAR
(50) NOT NULL,password CHAR(48) NOT NULL);
Query OK, 0 rows affected (0.02 sec)  // 建立users表並創建對應字段用以存放虛擬用戶名和密碼

mysql>

二、建立一個數據庫用戶給vsftpd服務認證虛擬用戶時鏈接訪問數據使用函數

mysql> grant select on vsftpd.* to vsftpd@172.16.20.242 identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)  // 建立一個名爲vsftpd的用戶,而且賦予它以vsftpd數據
全部表的查看權限,上面的IP地址是指定能夠從哪一個地址訪問mysql數據庫

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

三、向表中添加虛擬用戶帳號和密碼測試

mysql> insert into users(name,password) values('tom','redhat'),('jerry','redhat');
Query OK, 2 rows affected (0.00 sec)  // 向users表中插入兩行數據,分別對應兩個用戶名和密碼
Records: 2  Duplicates: 0  Warnings: 0

須要注意的是:這裏使用的是明文存放密碼,建議使用加密存放,例如password()函數,使用方法以下:ui

mysql> insert into users(name,password) values('tom',password('redhat')),('jerry',passowrd
('redhat'));


3、配置vsftpd

一、創建pam認證所需文件

[root@localhost ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=redat host=172.16.20.242 db=
vsftpd table=uesrs usercolumn=name passwdcolumn=password crypto=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=redhat host=172.16.20.242 
db=vsftpd table=users usercolumn=name passwdcolumn=password crypto=0
// /lib/security/pam_mysql.so指定使用pam_mysql.so進行認證
// user=vsftpd 指定數據庫用戶名
// passwd=redhat 指定數據庫用戶密碼
// host=172.16.20.242 指定同過哪一個主機地址進行數據庫鏈接
// db=vsftpd 指定數據庫名
// table=users 指定存儲虛擬用戶名和密碼的表
// usercolumn=name 指定存儲用戶名的字段
// passwdcolumn=password 指定存儲虛擬用戶密碼的字段
// crypto=0 指定虛擬用戶密碼存放的加密方式,0表明不加密,1表明使用crypt函數加密,2表明使用password()函數加密
,3表明使用md5方式加密,4表明使用sha1方式加密

二、修改vsftpd的配置,使其適應mysql認證

[root@localhost ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@localhost ~]# chmod go+rx /var/ftproot
// 建立一個虛擬用戶映射的系統用戶,用以訪問ftp服務,因爲其家目錄就是fpt服務的訪問目錄,因此
要給予其家目錄其餘用戶能夠訪問的權限

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   // 容許匿名用戶訪問,由於虛擬用戶的實質就是匿名用戶
local_enable=YES   // 容許本地用戶訪問,由於虛擬用戶須要映射到本地用戶
write_enable=YES   // 開啓對訪問目錄的寫權限,根據需求開啓
anon_upload_enable=NO   // 禁止匿名用戶上傳,根據需求配置
anon_mkdir_write_enable=NO   // 禁止虛擬用戶建立和刪除目錄,根據需求配置
chroot_local_user=YES   // 禁止用戶切換目錄

guest_enable=YES   // 開啓虛擬用戶功能
guest_username=vuser    // 設定虛擬用戶的映射的本地用戶爲vuser

pam_service_name=vsftpd.mysql    // pam的配置文件默認爲vsftpd,因爲上面作了修改,這裏須要修
改爲咱們配置的文件


4、啓動vsftpd服務,並測試配置效果

[root@localhost ~]# service vsftpd start

使用windows的CMD訪問

836101ef13155b5f301747cd107457b3.png


5、配置虛擬用戶的訪問權限

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

一、配置vsftpd爲虛擬用戶使用配置文件目錄

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config   // 設定虛擬用戶配置文件的存放目錄

二、建立相應目錄並建立配置文件

[root@localhost ~]# mkdir /etc/vsftpd/vusers_config
[root@localhost ~]# touch tom jerry

三、配置虛擬用戶的訪問權限

虛擬用戶對vsftpd服務的訪問權限是經過匿名用戶的相關指令進行的。例如,若是須要讓tom用戶具備上傳文件的權限等,能夠修改/etc/vsftpd/vusers_config/tom文件,在裏面添加以下選項便可。

須要注意的是,以前在/etc/vsftpd/vsftpd.conf中的相關於匿名用戶的權限則須要關閉掉,避免衝突,若是vsftpd.conf中配置了權限,而虛擬用戶的配置文件中沒有配置,那麼會繼承vsftpd.conf中的權限

若是vsftpd.conf中配置了權限,而虛擬用戶的配置文件中也有配置嗎,那麼會繼承虛擬用戶的配置文件中的配置

[root@localhost ~]# vim /etc/vsftpd/vusers_config/tom
anon_upload_enable=YES
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}


寫的比較潦草,若有遺漏錯誤和爭議之處,歡迎你們的批評指正和討論,謝謝。

相關文章
相關標籤/搜索