vsftpd可以通過三種賬戶登錄系統:
系統賬戶:系統本地賬戶登錄系統,默認進入的目錄是用戶家目錄,可以在所有有權限的路徑切換;
匿名賬戶:匿名用戶登錄,然后映射為一個本地用戶;
虛擬賬戶:既不是系統本地用戶也不是匿名用戶,而是通過pam做第三方認證的方法,支持文件和數據庫,ldap的認證,此處通過mysql進行實驗;
一、準備實驗環境
-
實驗在一臺虛擬機上進行,此虛擬機需要安裝vsftpd和mysql,此處采用的是centos7.3的系統。
-
安裝vsftpd和mariadb-server:
yum install -y vsftpd mariadb-server
-
因為是通過pam_mysql進行用戶驗證,所以需要安裝pam_mysql模塊,但是默認系統yum源不提供,所以此處通過編譯安裝,此前需要先安裝如下環境:
yum install -y mariadb-devel pam-devel yum groupinstall -y "Develop Tools"
-
下載pam_mysql并進行編譯安裝,加壓縮之后切換到目錄內并執行如下命令:
./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security make && make install
-
二、具體實驗配置
-
首先需要在vsftpd的配置文件編輯/etc/vsftpd/vsftpd.conf如下選項:
#通過mysql驗證的文件路徑# pam_service_name=vsftpd.mysql #允許虛擬賬號登錄# guest_enable=YES #虛擬用戶映射為本地的ftp用戶# guest_username=ftp #系統用戶權限單獨配置文件路徑# user_config_dir=/etc/vsftpd/vusers_config/
-
mysql數據庫創建數據庫和數據表,并插入值,并授權指定用戶對庫有訪問權限;
mysql> CREATE DATABASE vsftpd; mysql> CREATE TABLE users ( -> id INT AUTO_INCREMENT NOT NULL, -> name CHAR(30) BINARY NOT NULL, -> password CHAR(48) BINARY NOT NULL, -> PRIMARY KEY (id) -> ); mysql> INSERT INTO users (name,password) VALUES ('tom',password('1234567a')); mysql> INSERT INTO users (name,password) VALUES ('cat',password('1234567a')); mysql> GRANT select ON vsftpd.* TO vsftpd@'%' IDENTIFIED BY 'mageedu'; mysql> FLUSH PRIVILEGES;
-
創建步驟1指定的pam_service_name文件,路徑在必須在/etc/pam.d下:
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=192.168.11.137 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=192.168.11.137 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
-
在/etc/vsftpd/vusers_config/目錄下創建和tom,jerry同名的文件,指定權限,此處權限如下:
#tom允許所有權限# anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES #jerry不允許創建目錄# non_upload_enable=YES anon_mkdir_write_enable=NO anon_other_write_enable=YES
-
通過ftp登錄,然后測試即可。
原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/77736