FTP服務-實現vsftpd虛擬用戶

前幾篇介紹了基礎,這篇將具體實現幾個案例html

 

實現基於文件驗證的vsftpd虛擬用戶,每一個用戶獨立一個文件夾

一、建立用戶數據庫文件

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

三、建立linux用戶和ftp目錄(這個帳號未來虛擬帳號映射成它)

useradd -s /sbin/nologin vftpuser
chmod 555 /home/vftpuser/  ###把用戶家目錄的寫權限去掉

備註:映射帳號對根要沒有寫權限sql

mkdir upload  ##建立上傳用的文件夾
chown vftpuser upload/  

備註:把這個文件夾的所屬人改成vftpuser用戶,次用戶雖然對 /home/vftpuser/ 就也是根,沒有寫權限,可是對根下的目錄有寫權限。數據庫

把匿名寫權限打開vim

clipboard

四、修改pam配置文件

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

五、讓主配置文件知道你要用本身修改的pam模塊

clipboard

備註:放在vusers.txt裏面的就是合法用戶,能夠登錄bash

六、把全部系統帳號映射成咱們建立的vftpuser帳號,並關閉linux系統帳號登錄

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

重啓,測試

clipboard

備註:想要增長用戶,在vusers.txt文件中寫入,再生成db文件

 

實現:基於MYSQL驗證的vsftpd虛擬用戶

說明:本實驗在兩臺CentOS主機上實現,一臺作爲FTP服務器,一臺作數據庫服務器

1、安裝所須要包和包組

在數據庫服務器上安裝包:

Centos7:在數據庫服務器上安裝

yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb

Centos6:在數據庫服務器上安裝

yum –y install mysql-server

 

在FTP服務器上安裝vsftpd和pam_mysql包

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/

 

一、解壓縮pam模塊

[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

clipboard

開始make

[root@centos7_77 pam_mysql-0.7RC1]# make && make install

clipboard

三、建立數據庫和表

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'));

clipboard

三、準備一個pam配置文件(在FTP服務器上創建pam認證所需文件)

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()函數加密

 

四、讓ftp服務器知道調用咱們配置的pam模塊配置文件

vim /etc/vsftpd/vsftpd.conf

clipboard

五、映射爲系統帳號vftpuser

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

重啓

測試

clipboard

clipboard

備註:要想讓gg用戶有寫權限,在/etc/vsftpd/vftpuser.d/gg文件中加入

anon_upload_enable=YES

anon_mkdir_write_enable=YES

還要對/data/gg這個目錄要有寫權限

setfacl -m u:vftpuser:rwx /data/gg

相關文章
相關標籤/搜索