vsftpd 使用虛擬用戶及單用戶多目錄的配置

vsftpd 使用虛擬用戶及單用戶多目錄的配置

1、配置vsftpd虛擬用戶

安裝vsftpd

yum -y install pam pam-devel db4 db4-tcl
yum -y install vsftpdnode

配置vsftpd.conf

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
vim /etc/vsftpd/vsftpd.conf數據庫

anonymous_enable=NO
#設成YES,容許匿名用戶登錄
local_enable=YES
#容許/禁止本地用戶登錄 注意:主要是爲虛擬宿主用戶,若是該項目設定爲NO那麼全部虛擬用戶將沒法訪問。
write_enable=YES
#設定能夠進行寫操做。
local_umask=022
#設定上傳後文件的權限掩碼,文件644,文件夾755
dirmessage_enable=YES
#設定開啓目錄標語功能
xferlog_enable=YES
#設定開啓日誌記錄功能。
connect_from_port_20=YES
#設定端口20進行數據鏈接
xferlog_std_format=YES
#設定日誌使用標準的記錄格式
listen=YES
#開啓獨立進程vsftpd,不使用超級進程xinetd。設定該Vsftpd服務工做在StandAlone模式下。
pam_service_name=vsftpd
#設定,啓用pam認證,並指定認證文件名/etc/pam.d/vsftpd
userlist_enable=YES
#設定userlist_file中的用戶將不得使用FTP
tcp_wrappers=YES
#設定支持TCP Wrappers
chroot_local_user=YES
#限制全部用戶在主目錄
#限制全部用戶在主目錄
#↓↓↓↓↓↓↓↓↓↓↓
#↓↓↓↓↓↓↓↓↓↓↓
#如下這些是關於Vsftpd虛擬用戶支持的重要配置項目。默認Vsftpd.conf中不包含這些設定項目,須要本身手動添加配置
guest_enable=YES
#設定啓用虛擬用戶功能
guest_username=www
#指定虛擬用戶的宿主用戶
virtual_use_local_privs=YES
#設定虛擬用戶的權限符合他們的宿主用戶 
user_config_dir=/etc/vsftpd/vconf
#設定虛擬用戶我的Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄裏,將存放每一個Vsftp虛擬用戶個性的配置文件,
#一個須要注意的地方就是這些配置文件名必須和虛擬用戶名相同。

配置虛擬用戶

建立虛擬用戶配置文件存放路徑
mkdir /etc/vsftpd/vconfvim

建立虛擬用戶名單文件,在其中加入用戶的用戶名和口令信息。格式很簡單:「奇數行用戶名,偶數行口令」。
virtusers文件格式以下:安全

vim /etc/vsftpd/virtusers服務器

username1
password123

生成虛擬用戶數據文件session

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

須要特別注意的是,之後再要添加虛擬用戶的時候,只須要按照「一行用戶名,一行口令」的格式將新用戶名和口令添加進虛擬用戶名單文件。
可是光這樣作還不夠,這樣是不會生效的!還要再執行一遍「 db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶數據庫文件.db 」的命令使其生效才能夠!多線程

設置認證文件PAM

編輯Vsftpd的PAM驗證配置文件,把原來的配置文件所有註釋掉(不註釋掉虛擬用戶會登陸不上),添加以下行
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup併發

#vim /etc/pam.d/vsftpdapp

auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers

#以上兩條是手動添加的,內容是對虛擬用戶的安全和賬戶權限進行驗證。
這裏的auth是指對用戶的用戶名口令進行驗證。
這裏的accout是指對用戶的賬戶有哪些權限哪些限制進行驗證。
其後的sufficient表示充分條件,也就是說,一旦在這裏經過了驗證,那麼也就不用通過下面剩下的驗證步驟了。相反,若是沒有經過的話,也不會被系統當即擋之門外,由於sufficient的失敗不決定整個驗證的失敗,意味着用戶還必須將經歷剩下來的驗證審覈。
再後面的/lib/security/pam_userdb.so表示該條審覈將調用pam_userdb.so這個庫函數進行。
最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數將到這個指定的數據庫中調用數據進行驗證。tcp

創建虛擬用戶配置文件模版

建立ftp的目錄,設置屬組屬主爲www,應爲咱們上面指定虛擬用戶的宿主用戶是www,這樣ftp用戶纔有權限對目錄進行操做。

mkdir -p /data/www/virtual/

chown www.www -R /data/www/virtual/

vim /etc/vsftpd/vconf/vconf.tmp

local_root=/data/www/virtual/
#指定虛擬用戶的具體主路徑
anonymous_enable=NO
#設定不容許匿名用戶訪問
write_enable=YES
#設定容許寫操做
local_umask=022
#設定上傳文件權限掩碼
anon_upload_enable=NO
#設定不容許匿名用戶上傳
anon_mkdir_write_enable=NO
#設定不容許匿名用戶創建目錄
idle_session_timeout=600
#設定空閒鏈接超時時間
data_connection_timeout=120
#設定單次連續傳輸最大時間
max_clients=10
#設定併發客戶端訪問個數
max_per_ip=5
#設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件
local_max_rate=50000
#設定該用戶的最大傳輸速率,單位b/s

cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/username1

測試配置

vsftpd 使用虛擬用戶及單用戶多目錄的配置

2、vsftpd單用戶多目錄的配置

在使用vsftpd過程當中,咱們會常常發現vsftpd在默認狀況下一個用戶(不管是系統用戶仍是虛擬用戶)只能擁有一個目錄,通常是根目錄。
若是此時再要向該用戶添加其它目錄的話,好比系統的其餘目錄也須要此用戶訪
問,那麼就沒法直接添加了。
.
因此咱們只能藉助其餘方式實現這個功能
.
一開始我想到了軟鏈接的方式,結果是vsftpd不支持軟鏈接,硬連接又不容許將硬連接指向目錄。
.
在此咱們使用的是 mount --bind 命令,不少人將這個命令理解爲針對目錄的硬鏈接,但這種想法是錯的。
因此我須要注意一下兩點:

1.mount --bind鏈接的兩個目錄的inode號碼並不同,只是目標目錄的block被屏蔽掉,inode被重定向到原目錄的inode (目標目錄的inode和block依然沒變,就是說目標目錄只是隱藏不是刪除,數據都沒有改變,只是訪問不到了)

2.兩個目錄的對應關係存在於內存裏,一旦重啓掛載關係就不存在了,因此咱們想要服務器重啓以後還有效的話就須要寫到/etc/rc.local

.
建立幾個測試目錄
mkdir /data/www/virtual/test{1,2}
mkdir /home/test{1,2}
chown -R www.www /home/test{1,2}

vim /etc/rc.local

#可讀寫掛載
mount --bind /home/test1/ /data/www/virtual/test1/
#只讀掛載
mount --bind /home/test2/ /data/www/virtual/test2/
mount -o remount,ro /data/www/virtual/test2/

vsftpd 使用虛擬用戶及單用戶多目錄的配置

使用 source加載一下/etc/rc.local, 讓它當即生效。

source /etc/rc.local

然使用 mount 查看掛載的結果。

vsftpd 使用虛擬用戶及單用戶多目錄的配置

相關文章
相關標籤/搜索