標籤:vsftpd虛擬使用者
一、準備所需要的程式包
mysql
pam_mysql
vsftpd
二、開始安裝
[[email protected] ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql// 注意:pam_mysql由epel源提供,epel源需要自行設定
三、建立虛擬使用者帳號
1、建立資料庫及儲存使用者的表
[[email protected] ~]# service mysqld start// 啟動mysql服務[[email protected] ~]# mysqlmysql> create database vsftpd; // 建立名為vsftpd的資料庫Query OK, 1 row affected (0.00 sec)mysql> use vsftpd // 切換當前資料庫為vsftpdDatabase changedmysql> 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認證所需檔案
[[email protected] ~]# vim /etc/pam.d/vsftpd.mysqlauth required /lib/security/pam_mysql.so user=vsftpd passwd=redat host=172.16.20.242 db=vsftpd table=uesrs usercolumn=name passwdcolumn=password crypto=0account 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認證
[[email protected] ~]# useradd -s /sbin/nologin -d /var/ftproot vuser[[email protected] ~]# chmod go+rx /var/ftproot// 建立一個虛擬使用者映射的系統使用者,用以訪問ftp服務,由於其家目錄就是fpt服務的訪問目錄,所以要給予其家目錄其他使用者可以訪問的許可權[[email protected] ~]# vim /etc/vsftpd/vsftpd.confanonymous_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 // 設定虛擬使用者的映射的本機使用者為vuserpam_service_name=vsftpd.mysql // pam的設定檔預設為vsftpd,由於上面做了修改,這裡需要修改成我們配置的檔案
四、啟動vsftpd服務,並測試組態效果
[[email protected] ~]# service vsftpd start
使用windows的CMD訪問
五、配置虛擬使用者的存取權限
vsftpd可以在設定檔目錄中為每個使用者提供單獨的設定檔以定義其ftp服務存取權限,每個虛擬使用者的設定檔名同虛擬使用者的使用者名稱,設定檔目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
1、配置vsftpd為虛擬使用者使用設定檔目錄
[[email protected] ~]# vim /etc/vsftpd/vsftpd.confuser_config_dir=/etc/vsftpd/vusers_config // 設定虛擬使用者設定檔的存放目錄
2、建立相應目錄並建立設定檔
[[email protected] ~]# mkdir /etc/vsftpd/vusers_config[[email protected] ~]# touch tom jerry
3、配置虛擬使用者的存取權限
虛擬使用者對vsftpd服務的存取權限是通過匿名使用者的相關指令進行的。例如,如果需要讓tom使用者具有上傳檔案的許可權等,可以修改/etc/vsftpd/vusers_config/tom檔案,在裡面添加如下選項即可。
需要注意的是,之前在/etc/vsftpd/vsftpd.conf中的相關於匿名使用者的許可權則需要關閉掉,避免衝突,如果vsftpd.conf中配置了許可權,而虛擬使用者的設定檔中沒有配置,那麼會繼承vsftpd.conf中的許可權
如果vsftpd.conf中配置了許可權,而虛擬使用者的設定檔中也有配置嗎,那麼會繼承虛擬使用者的設定檔中的配置
[[email protected] ~]# vim /etc/vsftpd/vusers_config/tomanon_upload_enable=YESanon_mkdir_write_enable={YES|NO}anon_other_write_enable={YES|NO}
寫的比較潦草,如有遺漏錯誤和爭議之處,歡迎大家的批評指正和討論,謝謝。
vsftpd虛擬使用者認證配置(vsftpd+pam+mysql)