在centos7系統上實作搭建vsftp服務,基于pam_mysql的虛拟使用者機制:
編譯安裝pam_mysql
準備環境:
]# yum -y groupinstall "Development Tools" "server Platform Development"
]# yum -y install pam-devel openssl-devel mariadb-devel mariadb-server
]# yum -y install vsftpd
解壓pam_mysql-0.7RC1.tar.gz源碼包
]# cd pam_mysql-0.7RC1/
]# ./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
]# make && make install
啟動服務
]# systemctl start mariadb.service
]# mv vsftpd.conf{,.test}
]# cp vsftpd.conf.bak vsftpd.conf 在複制的配置檔案中修改,把原配置檔案保留;
登入mysql資料庫,建立庫、表、使用者并授權
]# mysql
> CREATE DATABASE vsftpd;
> use vsftpd;
> CREATE TABLE users (
id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
name char(30) NOT NULL,
password char(48) binary NOT NULL );
> INSERT INTO users(name,password) VALUES ('tom',password('mageedu'));
> INSERT INTO users(name,password) VALUES ('jerry',password('mageedu'));
> GRANT ALL ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'mageedu';
> GRANT ALL ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'mageedu';
> FLUSH PRIVILEGES;
測試使用者是否能登入mysql
]# mysql -uvsftpd -pmageeud
> exit
資料庫配置完畢。
配置vsftpd,通過pam-mysql子產品連結mysql伺服器,來檢索出使用者和密碼:
]# less /pam_mysql-0.7RC1/README 檢視源碼包中的配置檔案說明
]# man vsftpd.conf 檢視配置檔案說明
]# vim /etc/pam.d/vsftpd.mysql
<a href="http://s2.51cto.com/wyfs02/M01/7F/7E/wKioL1cgqwaQPzuIAAAxtqgGjq0426.png" target="_blank"></a>
建立一個系統使用者,為虛拟使用者映射使用的使用者及授權
]# useradd -s /sbin/nologin -d /ftproot vusre
配置vsftpd,確定匿名使用者有哪些權限,可根據需要開啟或禁用相關權限
]# vim /etc/vsftpd/vsftpd.conf
<a href="http://s1.51cto.com/wyfs02/M02/7F/75/wKioL1cfYf2T_nc7AAAxBhtaEvw333.png" target="_blank"></a>
]# mkdir -pv /ftproot/{pub,upload}
確定使用者的家目錄,讓其它遠端通路的使用者能讀、執行權限,這樣才能cd進此目錄;但不能有寫權限,否則遠端ftp登入失敗;
]# chmod go+rx /ftproot/
]# chmod u-w /ftproot/
]# systemctl start vsftpd.service
此時虛拟使用者建立成功,可在本地另一主機上測試通路ftp伺服器了。
本文轉自 crystaleone 51CTO部落格,原文連結:http://blog.51cto.com/linsj/1768047,如需轉載請自行聯系原作者