標籤:vsftpd 虛擬使用者
虛擬使用者:
使用者帳號儲存於何處?
檔案,MySQL,Redis, ...
vsftpd的認證功能託管給pam:
Pluggable Authencate Module,認證架構,認證庫;
通過模組完成認證功能:/usr/lib64/security/
pam_mysql模組:
下載pam_mysql的源碼包官方下載http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
(1)準備編譯安裝環境
[[email protected] ~]#yum –y groupinstall “Development Tools”
[[email protected] ~]#wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[[email protected] ~]# tar xf pam_mysql-0.7RC1.tar.gz
[[email protected] ~]# cd pam_mysql-0.7RC1/
[[email protected] ~]# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504467309494.png" title="1476504467309494.png" alt="1.png" />
在編譯過程中如果出現此錯誤需要安裝mysql-devel開發包
[[email protected] pam_mysql-0.7RC1]# yum -y install mysql-devel
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504543117575.png" title="1476504543117575.png" alt="2.png" />
遇到此錯誤還需要安裝pam-devel的開發包
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504666672754.png" title="1476504666672754.png" alt="3.png" />
[[email protected] pam_mysql-0.7RC1]# yum -y pam-devel
到此檢查環境產生config檔案就完成,接下只需要make和make install
[[email protected] pam_mysql-0.7RC1]# make
[[email protected] pam_mysql-0.7RC1]# make install
編譯安裝完成之後查看/usr/lib64/security目錄中有的檔案
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504755780358.png" title="1476504755780358.png" alt="4.png" />
準備資料庫:
vsftpd基於虛擬使用者認證是在CentOS7的主機上進行操作
安裝資料庫
[[email protected] ~]# yum -y install mariadb-server
接下來啟動mysql服務即可
[[email protected] ~]#systemctl start mariadb
[[email protected]~]#ss –tnl //鍵入此命令查看3306連接埠是否監聽
之後就需要講虛擬使用者認證的使用者和密碼放到資料庫當中,所以需要給vsftpd建立一個資料和相應的表,具體操作如下
建立資料庫
mysql> CREATE DATABASE vsftpd;
使用新建立的資料庫,然後使用此資料庫然後建立表users
mysql>USE vsftpd;
mysql> CREATE TABLE vsftpd.users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(30) NOT NULL UNIQUE KEY,password CHAR(48));
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504825879861.png" title="1476504825879861.png" alt="5.png" />
在users表上建立資料
mysql>INSERT INTO users (name,password) VALUES (‘tom’,PASSWORD(‘redhat’)),(‘jerry’,PASSWORD(‘redhat’));
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504866201401.png" title="1476504866201401.png" alt="6.png" />
授權遠端使用者登入mysql
mysql> GRANT ALL ON vsftpd.* TO ‘vsftpd‘@‘localhost‘ IDENTIFIED BY ‘mageedu‘;
mysql> GRANT ALL ON vsftpd.* TO ‘vsftpd‘@‘127.0.0.1‘ IDENTIFIED BY ‘mageedu‘;
mysql> FLUSH PRIVILEGES; //重新整理授權使之生效
這裡需要對localhost和127.0.0.1兩個主機授權是因資料庫有時方向解析時解析不到ip地址導致使用者無法登入所以需要對兩個主機進行授權
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504932740708.png" title="1476504932740708.png" alt="7.png" />
vsftpd通過pam_mysql進行認證的設定檔使pam能夠利用pam-mysql這個模組來串連資料庫擷取資料庫中的使用者名稱及密碼 ,所以需要編輯:/etc/pam.d/vsftpd.mysql檔案,檔案內容如下
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
user:串連mysql伺服器的使用者名稱,此使用者要有許可權訪問認證vsftpd服務的資料庫;
passwd:上面的使用者的密碼;
host:mysql伺服器主機地址;
db:認證vsftpd服務的資料庫名稱;
table:存放了使用者和密碼的表;
usercolumn:使用者名稱對應的欄位;
passwdcolumn:密碼對應的欄位;
crypt:密碼加密方法;
準備匿名使用者映射的系統使用者帳號:
# mkdir /ftproot
# useradd -d /ftproot vuser //建立使用者vuser並將使用者的家目錄設定為/ftproot
# mkdir /ftproot/{pub,upload} //在虛擬使用者的根目錄下建立一個公用目錄和一個上傳檔案的目錄
# setfacl -m u:vuser:rwx /ftproot/upload //給用虛擬使用者添加存取控制清單,使用能夠上傳檔案
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476504986521461.png" title="1476504986521461.png" alt="8.png" />
配置vsftpd:vsftpd.conf
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
配置每匿名使用者有單獨的許可權設定
vsftpd.conf,添加:
user_config_dir=/etc/vsftpd/users_conf
建立目錄:
# mkdir /etc/vsftpd/vusers_conf
為每使用者提供設定檔:
/etc/vsftpd/vusers_conf/{tom,jerry}
配置許可權的指令:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
測試:
在另外一台主機登入ftp進行上傳檔案測試
lftp -u tom,mageedu 10.1.48.11
650) this.width=650;" src="http://www.178linux.com/ueditor/php/upload/image/20161015/1476505090710164.png" title="1476505090710164.png" alt="9.png" />
650) this.width=650;" src="http://www.178linux.com/wp-content/plugins/ueditor/ueditor/themes/default/images/spacer.gif" alt="spacer.gif" width="554" border="0" height="150" />
本文出自 “營運生涯” 部落格,請務必保留此出處http://fszxxxks.blog.51cto.com/10122713/1862144
vsftpd基於mysql做虛擬使用者認證