基于MySql验证的vsftpd虚拟用户


1. Mysql瀹夎

yum -y install mariadb-server
systemctl enable --now mariadb.service

1.2 寤鸿〃寤哄簱寤虹敤鎴?/h3>
mysql -e "CREATE DATABASE vsftpd;USE vsftpd;
CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL);
INSERT INTO users(name,password) values('qiu',password('123456'));
INSERT INTO users(name,password) values('zhang',password('654321'));"
mysql -e "select * from vsftpd.users;"

鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩? src=

1.3 鍒涘缓杩滅▼杩炴帴璐︽埛

mysql -e "create user vsftpd@'192.168.31.%' identified by 'Pana#123';"
mysql -e "grant all on vsftpd.* to vsftpd@'192.168.31.%';"

2. 瀹夎FTP鏈嶅姟鍣?/h2>

2.1 瀹夎vsftpd

yum install -y vsftpd

2.2 瀹夎pam_mysql

yum -y install vsftpd gcc gcc-c++ make mariadb-devel pam-devel
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar xf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-pam-mods-dir=/lib64/security 
make install

2.2 寤虹珛pam璁よ瘉鎵闇鏂囦欢

cat > /etc/pam.d/vsftpd.mysql<<EOF
auth required pam_mysql.so user=vsftpd passwd=Pana#123 host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=Pana#123 host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
EOF

娉ㄦ剰锛氫互涓婂弬鑰?README鏂囨 。
crypt 鍔犲瘑鏂瑰紡锛?br /> 0琛ㄧず涓嶅姞瀵?br /> 1琛ㄧずcrypt(3)鍔犲瘑
2琛ㄧず浣跨敤mysql password()鍑芥暟鍔犲瘑
3琛ㄧずmd5鍔犲瘑
4琛ㄧずsha1鍔犲瘑

2.3 寤虹珛vsftpd鐢ㄦ埛

mkdir -pv /data/ftproot/upload
useradd -d /data/ftproot -s /sbin/nologin -r vuser
setfacl -m u:vuser:rwx /data/ftproot/upload

2.4 淇敼vsftpd閰嶇疆鏂囦欢

mkdir /etc/vsftpd/conf.d/
sed -Eri "s#(pam_service_name=vsftpd)#1.mysql#" /etc/vsftpd/vsftpd.conf
echo "guest_enable=YES" >> /etc/vsftpd/vsftpd.conf
echo "guest_username=vuser" >> /etc/vsftpd/vsftpd.conf

2.5 閲嶅惎vsftpd鏈嶅姟

systemctl enable --now vsftpd

鍒版杩欑瘒鍏充簬鍩轰簬MySql楠岃瘉鐨剉sftpd铏氭嫙鐢ㄦ埛鐨勬枃绔犲氨浠嬬粛鍒拌繖浜?鏇村鐩稿叧MySql vsftpd铏氭嫙鐢ㄦ埛鍐呭璇锋悳绱㈣剼鏈箣瀹朵互鍓嶇殑鏂囩珷鎴栫户缁祻瑙堜笅闈㈢殑鐩稿叧鏂囩珷甯屾湜澶у浠ュ悗澶氬鏀寔鑴氭湰涔嬪锛?/p>