前幾篇介紹了基礎,這篇將具體實現幾個案例html
vim /etc/vsftpd/vusers.txt qq centos momo centos
備註:文件內容格式爲奇數行爲用戶名,偶數行爲密碼mysql
cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db ##編譯文件 chmod 600 vusers.db
備註:修改權限是爲了安全linux
useradd -s /sbin/nologin vftpuser chmod 555 /home/vftpuser/ ###把用戶家目錄的寫權限去掉
備註:映射帳號對根要沒有寫權限sql
mkdir upload ##建立上傳用的文件夾 chown vftpuser upload/
備註:把這個文件夾的所屬人改成vftpuser用戶,次用戶雖然對 /home/vftpuser/ 就也是根,沒有寫權限,可是對根下的目錄有寫權限。數據庫
把匿名寫權限打開vim
vim /etc/pam.d/vusers.db #這個名字叫什麼均可centos
auth required pam_userdb.so db=/etc/vsftpd/vusers
注意:這個vusers名字必定要和第二步中建立的xxxx.db名字同樣安全
account required pam_userdb.so db=/etc/vsftpd/vusers
備註:放在vusers.txt裏面的就是合法用戶,能夠登錄bash
vim /etc/vsftpd/vsftpd.conf服務器
guest_enable=YES guest_username=vftpuser
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vftpuser.d/
mkdir /etc/vsftpd/vftpuser.d/
[root@centos7_77 vftpuser.d]# cat > qq anon_upload_enable=YES anon_mkdir_write_enable=YES 備註:意思是說虛擬用戶qq有匿名寫權限
vim /etc/vsftpd/vftpuser.d/qq
local_root=/data/qq
備註:要是這個文件夾不存在就建立
mkdir /data/qq
備註:在qq目錄下建立個文件用於測試
touch /data/qq/qq.txt
重啓,測試
備註:想要增長用戶,在vusers.txt文件中寫入,再生成db文件
說明:本實驗在兩臺CentOS主機上實現,一臺作爲FTP服務器,一臺作數據庫服務器
Centos7:在數據庫服務器上安裝
yum –y install mariadb-server systemctl start mariadb.service systemctl enable mariadb
Centos6:在數據庫服務器上安裝
yum –y install mysql-server
centos6:pam_mysql由epel6的源中提供
yum install vsftpd pam_mysql
centos7:無對應rpm包,需手動編譯安裝
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd
下載pam_mysql-0.7RC1.tar.gz
https://sourceforge.net/projects/pam-mysql/
[root@centos7_77 ~]# tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
[root@centos7_77 pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
備註:這樣須要注意指定的位置,mysql
如今尚未pam_mysql.so
[root@centos7_77 pam_mysql-0.7RC1]# make && make install
1)建立ftpdb數據庫
MariaDB [(none)]> create database ftpdb;
2)受權一個用戶能夠連這個數據庫(有讀權限就行)
MariaDB [(none)]> grant select on ftpdb.* to vsftpd@'localhost' identified by 'centos';
3)建立一個表
MariaDB [ftpdb]> create table users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );
4)往表裏增長虛擬用戶
MariaDB [ftpdb]> INSERT INTO users(name,password) values('gg',password('centos'));
MariaDB [ftpdb]> INSERT INTO users(name,password) values('mm',password('centos'));
cd /etc/pam.d/ vim vsftpd.mysql auth required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passw ord crypt=2
備註:
配置字段說明
• auth 表示認證
• account 驗證帳號密碼正常使用
• required 表示認證要經過
• pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也能夠寫絕
對路徑;後面爲給此模塊傳遞的參數
• user=vsftpd爲登陸mysql的用戶
• passwd=magedu 登陸mysql的的密碼
• host=mysqlserver mysql服務器的主機名或ip地址
• db=vsftpd 指定鏈接msyql的數據庫名稱
• table=users 指定鏈接數據庫中的表名
• usercolumn=name 當作用戶名的字段
• passwdcolumn=password 當作用戶名字段的密碼
• crypt=2 密碼的加密方式爲mysql password()函數加密
vim /etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES guest_username=vftpuser
備註:意思說,啓動guest用戶,系統用戶映射爲guest用戶,而guest用戶是vftpuser,
別忘了去掉此用戶的家目錄的讀W權限
指定用戶存放配置的文件夾
vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vftpuser.d cd /etc/vsftpd/vftpuser.d [root@centos7_77 vftpuser.d]# cat > mm local_root=/data/mm cat > gg local_root=/data/gg
備註:要想gg mm 充當虛擬用戶的根必須沒有寫權限
[root@centos7_77 data]# chmod a=rx mm [root@centos7_77 data]# chmod a=rx gg 再gg、mm目錄下建立個文件好測試 [root@centos7_77 gg]# touch gg.txt [root@centos7_77 mm]# touch mm.txt
重啓
測試
備註:要想讓gg用戶有寫權限,在/etc/vsftpd/vftpuser.d/gg文件中加入
anon_upload_enable=YES
anon_mkdir_write_enable=YES
還要對/data/gg這個目錄要有寫權限
setfacl -m u:vftpuser:rwx /data/gg