vsftpd基於mysql實現用戶認證
IP地址 | 操作系統 | 服務器角色 |
192.168.1.144 | CentOS 6.9 | vsftpd服務器 |
192.168.1.145 | CentOS 6.9 | mysql服務器 |
二、安裝前準備:
1、 服務器時間校對
2、 配置epel源
三、mysql服務器所需執行的操作:
1、 安裝軟件包:# yum -y install mysql-server mysql-devel ftp
2、 啟動mysql,檢查3306號端口是否被監聽:# service mysqld start # ss -tnlp | grep :3306
3、 初始化mysql:# mysql_secure_installation //
4、 創建數據庫、表,並授權遠程用戶登錄:
# mysql -uroot -p
mysql> create database ftp;
mysql> grant select on ftp.* to ftpuser@'192.168.1.144' identified by '123456';
mysql> flush privileges;
mysql> use ftp;
mysql> create table user(id int unsigned auto_increment not null primary key,name varchar(20) binary not null,password char(48) binary not null);
mysql> desc user;
5、 添加FTP虛擬用戶marion和keyso:
mysql> insert into user(name,password) values('marion',password('mftpasswd')),('keyso',password('kftpasswd'));
備註:虛擬用戶marion使用密碼mftpasswd登錄FTP,虛擬用戶keyso則使用密碼kftpasswd登錄FTP
mysql> select * from user;
備註:賬號密碼使用password()函數加密後存儲
四、vsftpd服務器所需執行的操作:
1、 安裝軟件包:# yum -y install vsftpd pam_mysql mysql
2、 使用賬號ftpuser遠程登錄mysql服務器:
3、 創建認證所需文件vsftpd.mysql:
# rpm -ql pam_mysql | grep pam_mysql.so --> /lib64/security/pam_mysql.so
# vim /etc/pam.d/vsftpd.mysql,添加如下兩行代碼:
auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.145 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.145 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2
備註:
數字 | 代表的含義 |
0 | 不加密,明文 |
1 | 使用crypt函數加密 |
2 | 使用mysql password()函數加密 |
3 | 使用md5加密 |
4 | 使用sha1加密 |
4、 創建虛擬用戶映射的系統用戶:
# useradd -s /sbin/nologin -d /ftpdocs vuser //新的家目錄ftpdocs必須事先不存在,該命令會自動創建
# chmod go+rx /ftpdocs
5、 修改主配置文件/etc/vsftpd/vsftpd.conf,確認啟用如下選項:
chroot_local_user=YES
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers
use_localtime=YES
6、 創建對應的虛擬用戶配置文件目錄:# mkdir -pv /etc/vsftpd/vusers
7、 配置不同的虛擬用戶具有不同的訪問權限:
# cd /etc/vsftpd/vusers
# vim marion
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# cp marion keyso
# sed -i 's#YES#NO#g' keyso
備註:每個虛擬用戶的配置文件名同虛擬用戶的用戶名。虛擬用戶所能執行的權限都由匿名用戶的相關選項定義。所有的虛擬用戶都映射到系統用戶vuser上。
8、 啟動vsftpd,檢查21號端口是否被監聽:# service vsftpd start # ss -tnlp | grep :21
五、用戶認證測試:
在mysql服務器上分別使用虛擬用戶marion和keyso遠程登錄FTP:# ftp 192.168.1.144,測試上傳文件、刪除文件、創建目錄和刪除目錄等權限
使用虛擬用戶marion登錄FTP:
使用虛擬用戶keyso登錄FTP:
vsftpd基於mysql實現用戶認證