馬哥教育面授21期
運維
vsftpd
MySQL
說明:本實驗在兩臺CentOS主機上實現,一臺做為FTP服務器,一臺做數據庫服務器
一、安裝所需要包和包組:
-
在數據庫服務器上安裝包:
yum –y install mariadb-server mariadb-devel
systemctl start mariadb.service
systemctl enable mariadb -
在FTP服務器上安裝包pam_mysql
centos7:無對應rpm包,需手動編譯安裝
?yum -y groupinstall "Development Tools"
?yum -y install mariadb-devel pam-devel vsftpd
?下載pam_mysql-0.7RC1.tar.gz
ftp://172.16.0.1/pub/Sources/sources/pam/
?tar xvfpam_mysql-0.7RC1.tar.gz
?cd pam_mysql-0.7RC1/
?./configure –with-mysql=/usr –with-pam=/usr –with-pam-mods-dir=/lib64/security
?make
?make install
二、在數據庫服務器上創建虛擬用戶賬號
-
1.建立存儲虛擬用戶的數據庫,示例創建為vsftpd數據庫
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
ftp服務和mysql不在同一主機:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'172.16.%.%' IDENTIFIED BY 'magedu';
ftp服務和mysql在同一主機:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@localhost IDENTIFIED BY 'magedu';
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu';
mysql> FLUSH PRIVILEGES; -
2.準備相關表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);
mysql>DESC users;
#mysql -uvsftpd -h 172.16.200.200 -pmagedu
mysql> SHOW DATABASES; -
3.添加測試的虛擬用戶
根據需要添加所需要的用戶,為了安全應該使用PASSWORD函數加密其密碼后存儲
mysql>DESC users;
mysql> INSERT INTO users(name,password) values(‘wang',password('magedu'));
mysql> INSERT INTO users(name,password) values(‘mage',password('magedu'));
mysql> SELECT * FROM users;
三、在FTP服務器上配置vsftpd服務
-
1.在FTP服務器上建立pam認證所需文件
#vi /etc/pam.d/vsftpd.mysql
添加如下兩行
auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
注意:參考README文檔,選擇正確的加密方式crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函數加密,3表示md5加密,4表示sha1加密
配置字段說明
?auth 表示認證
?account 驗證賬號密碼正常使用
?required 表示認證要通過
?pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕對路徑;后面為給此模塊傳遞的參數
?user=vsftpd為登錄mysql的用戶
?passwd=mageedu 登錄mysql的的密碼
?host=localhost 在mysql中定義的允許連接的主機名或ip地址
?db=vsftpd 連接msyql的哪一個庫
?table=users 連接庫里的哪一個表
?usercolumn=name 當做用戶名的字段
?passwdcolumn=password 當做用戶名字段的密碼
?crypt=2 密碼的加密方式為mysql password()函數加密 -
2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證
建立虛擬用戶映射的系統用戶及對應的目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp根目錄的寫權限
mkdir /var/ftproot/{upload,pub}
setfacl –m u:vuser:rwx /var/ftproot/upload
確保/etc/vsftpd.conf中已經啟用了以下選項
anonymous_enable=YES
添加下面兩項
guest_enable=YES
guest_username=vuser
修改下面一項,原系統用戶無法登錄
pam_service_name=vsftpd.mysql
四、啟動vsftpd服務
service vsftpd start;systemctl start vsftpd
chkconfig vsftpd on;systemctl enable vsftpd
查看端口開啟情況
netstat -tnlp |grep :21
五、Selinux相關設置:在FTP服務器上執行
?restorecon -R /lib64/security
?setsebool -P ftpd_connect_db 1
?setsebool -P ftp_home_dir 1
?chcon -R -t public_content_rw_t /var/ftproot/
六、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果
?tail /var/log/secure
七、在FTP服務器上配置虛擬用戶具有不同的訪問權限
vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可
-
1、配置vsftpd為虛擬用戶使用配置文件目錄
# vim /etc/vsftpd/vsftpd.conf
添加如下選項
user_config_dir=/etc/vsftpd/vusers_config -
2、創建所需要目錄,并為虛擬用戶提供配置文件
# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch wangmage -
3、配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。如果需要讓用戶wang具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下選項并設置為YES即可,只讀則設為NO
注意:需確保對應的映射用戶對于文件系統有寫權限
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
總結:本次實驗出現最多的問題是敲錯字和漏做了步驟……
原創文章,作者:wangshuai,如若轉載,請注明出處:http://www.www58058.com/64385
文章實用性很強,很具有操作性