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訪問
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}
寫的比較潦草,若有遺漏錯誤和爭議之處,歡迎你們的批評指正和討論,謝謝。