1. 程式人生 > >FTP服務-實現vsftpd虛擬用戶

FTP服務-實現vsftpd虛擬用戶

chown values 手動 vsftpd 關閉 table count net 具體實現

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

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

1、創建用戶數據庫文件

vim /etc/vsftpd/vusers.txt
qq
centos
momo
centos

備註:文件內容格式為奇數行為用戶名,偶數行為密碼

2、設置權限與編譯此文件

cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db ##編譯文件
chmod 600 vusers.db 

備註:修改權限是為了安全

3、創建linux用戶和ftp目錄(這個賬號將來虛擬賬號映射成它)

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

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

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

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

把匿名寫權限打開

技術分享圖片

4、修改pam配置文件

vim /etc/pam.d/vusers.db #這個名字叫什麽都可

auth required pam_userdb.so db=/etc/vsftpd/vusers  

註意:這個vusers名字一定要和第二步中創建的xxxx.db名字一樣

account required pam_userdb.so db=/etc/vsftpd/vusers

5、讓主配置文件知道你要用自己修改的pam模塊

技術分享圖片

備註:放在vusers.txt裏面的就是合法用戶,可以登陸

6、把所有系統賬號映射成我們創建的vftpuser賬號,並關閉linux系統賬號登陸

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

7、虛擬用戶建立獨立的配置文件

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有匿名寫權限

8、讓兩個虛擬用戶進來時看到的文件夾不一樣

vim /etc/vsftpd/vftpuser.d/qq

local_root=/data/qq

備註:要是這個文件夾不存在就創建

mkdir /data/qq

備註:在qq目錄下創建個文件用於測試

touch /data/qq/qq.txt

重啟,測試

技術分享圖片

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

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

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

一、安裝所需要包和包組

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

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/

1、解壓縮pam模塊

[root@centos7_77 ~]# tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

2、編譯

[root@centos7_77 pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

備註:這樣需要註意指定的位置,mysql

現在還沒有pam_mysql.so

技術分享圖片

開始make

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

技術分享圖片

3、創建數據庫和表

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

技術分享圖片

3、準備一個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()函數加密

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

vim /etc/vsftpd/vsftpd.conf

技術分享圖片

5、映射為系統賬號vftpuser

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

備註:意思說,啟動guest用戶,系統用戶映射為guest用戶,而guest用戶是vftpuser,

別忘了去掉此用戶的家目錄的讀W權限

6、讓登陸的賬號權限不一樣(針對每個用戶都有自己的配置文件)

指定用戶存放配置的文件夾

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

FTP服務-實現vsftpd虛擬用戶