一、準備所需要的程序包
mysql
pam_mysql
vsftpd
二、開始安裝
[root@localhost ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql // 注意:pam_mysql由epel源提供,epel源需要自行設置
三、創建虛擬用戶賬號
1、創建數據庫及存儲用戶的表
[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>
2、創建一個數據庫用戶給vsftpd服務認證虛擬用戶時連接訪問數據使用
mysql> grant select on vsftpd.* to [email protected] 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)
3、向表中添加虛擬用戶賬號和密碼
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()函數,使用方法如下:
mysql> insert into users(name,password) values('tom',password('redhat')),('jerry',passowrd ('redhat'));
三、配置vsftpd
1、建立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方式加密
2、修改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,由於上面做了修改,這裏需要修 改成我們配置的文件
四、啓動vsftpd服務,並測試配置效果
[root@localhost ~]# service vsftpd start
使用windows的CMD訪問
五、配置虛擬用戶的訪問權限
vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名,配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
1、配置vsftpd爲虛擬用戶使用配置文件目錄
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_config // 設定虛擬用戶配置文件的存放目錄
2、創建相應目錄並創建配置文件
[root@localhost ~]# mkdir /etc/vsftpd/vusers_config [root@localhost ~]# touch tom jerry
3、配置虛擬用戶的訪問權限
虛擬用戶對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}
寫的比較潦草,如有遺漏錯誤和爭議之處,歡迎大家的批評指正和討論,謝謝。