[root@localhost ~]#yum -y install vsftpd mysql-server mysql-devel pam-devel在PAM中默認是沒有mysql認證模塊的,所以要下載源碼自己手動安裝
tar -xf pam_mysql-0.7RC1.tar.gz -C /usr/src/ cd /usr/src/pam_mysql-0.7RC1 ./configure --with-mysql=/usr/bin/mysql_config make && make install
service mysqld start mysql -uroot -p首先先創建vsftp的數據庫
mysql> CREATE DATABASE vsftpd;
mysql> use vsftpd mysql> create table users ( id int AUTO_INCREMENT NOT NULL, name char(20) NOT NULL UNIQUE KEY, passwd char(48) NOT NULL, primary key(id));
mysql> insert into users(name,passwd) values('lustlost',password('123456'));
mysql> GRANT select on vsftpd.* to vsftpd@localhost identified by '123456'; mysql> GRANT select on vsftpd.* to [email protected] identified by '123456';
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf [root@localhost ~]# grep -v "^#" /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=YES pam_service_name=vsftpd.mysql #主要修改這一行,指定使用vsftpd.mysql這個pam配置文件調用pam認證 guest_enable=YES #開啟來賓賬戶 guest_username= mysqlftp #映射來賓賬戶,這個賬戶將會被映射為mysql數據庫中的賬戶 user_config_dir=/etc/vsftpd/vsftpd_user_conf #創建mysql每個虛擬用戶的配置目錄
#%PAM-1.0 session optional pam_keyinit.so force revoke #第一步認證首先使用數據庫認證,如果通過不再檢查下面其它認證,直接登陸,通不過就使用下面的認證 auth sufficient /usr/lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdpasswdcolumn=passwd crypt=2 #數據庫認證通不過,就采用vsftp默認的其余認證方法 auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth #授權和認證也是一樣的 account sufficient /usr/lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdpasswdcolumn=passwd crypt=2 account include password-auth session required pam_loginuid.so session include password-auth以上的PAM配置既可以使用mysql數據庫中的用戶認證,也可以使用系統用戶認證,如果只希望使用mysql數據庫中的用戶認證的話,可以講系統認證的配置相關行刪除
修改mysql虛擬賬戶的權限
[root@localhost ~]# chown mysqlftp:mysqlftp -R /var/ftp/pub/mysqlftp
創建mysql虛擬賬戶配置文件夾
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
在此文件夾下配置每個mysql虛擬賬戶的配置文件
[root@localhost vsftpd_user_conf]# touch lustlost
local_root=/var/ftp/pub/mysqlftp/lustlost #其余配置可以自己按需求寫,這裡只限制了mysql虛擬用戶的個人文件夾
在lustlost目錄中創建一個文件驗證結果
[root@localhost vsftpd_user_conf]# touch /var/ftp/pub/mysqlftp/lustlost/l.txt
也可以使用quota實現用戶的磁盤配額,也結合php,apache,可以實現虛擬主機的搭建。