Vsftpd 虛擬用戶實現公司各部門文件的上傳下載

做了好久的實驗,網上的好些文章都是或多或少沒說明白問題。這裏把我的實驗過程記下來,可能也會幫助到一些朋友。

情況:

開發、美工、運維組都有相關的資料需要更新、保存(上傳、下載、刪除、建立目錄等),且各個組相互不能進入其他的資料區,看同事們也喜歡用ftp工具,就用linux下的vsftpd搭建服務吧。考慮到安全問題,採用虛擬用戶登錄。

規劃:

開發組:develop

美工組:design

運維組:operate

ip地址:192.168.1.105

用戶名也暫且這樣定吧,密碼和用戶名相同

好了,開始:

一、準備

1、安裝vsftpd軟件:

[root@client ~]# yum install vsftpd –y

2、採用的是pam驗證模塊,所以得安裝相關軟件

[root@client ~]# yum install pam –y

3、採用文本帳號,生成相應數據庫文件,得有db4包支持

[root@client ~]# yum install db4 db4-devel db4-utils –y

4、建立賬戶文件(/etc/vsftpd/vsftpd_login.txt)

[root@client ~]# vim /etc/vsftpd/vsftpd_login.txt

[root@client ~]# cat /etc/vsftpd/vsftpd_login.txt

image

5、將文本文件內容加載到數據庫

[root@client ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db

-T選項允許應用程序能夠將文本文件轉譯載入進數據庫。由於我們之後是將虛擬用戶的信息以文件方式存儲在文件裏的,爲了讓vsftpd這個應用程序能夠通過文本來載入用戶數據,必須要使用-T。

-t用來指定轉譯載入的數據庫類型。可以指定的數據類型有Btree、Hash、Queue和Recon數據庫。這裏選擇Hash。

image

查看一下生成的db文件:

[root@client ~]# ll /etc/vsftpd/vsftpd_login*

image

6、設定驗證文件,指定驗證模塊和需要驗證的db文件

[root@client ~]# vim /etc/pam.d/vsftpd

只需要添加下面兩行,其他的註釋掉吧

image

二、創建系統賬戶

這裏存在兩個賬戶:

vsftpd服務的宿主用戶,默認爲root。可以自己建一個用戶作爲vsftpd的宿主用戶,也可不用管。這裏還是建立一個vsftpd用戶吧,沒必要登錄。

vsftpd虛擬的宿主用戶,就像develop需要有系統相關權限,就映射成系統的ftp_develop用戶(待會建立)的權限,所以這些用戶也沒有必要登錄系統。

我想把develop、design、operate三個組都放到/var/ftp下,就當是虛擬宿主用戶的家目錄權限去控制訪問吧

1、vsftpd服務的宿主用戶:

[root@client ~]# useradd -s /sbin/nologin vsftpd

2、三個組對應的虛擬宿主用戶:

[root@client ~]# useradd -d /var/ftp/develop -s /sbin/nologin ftp_develop
[root@client ~]# useradd -d /var/ftp/design -s /sbin/nologin ftp_design
[root@client ~]# useradd -d /var/ftp/operate -s /sbin/nologin ftp_operate

image

查看是否建立文件路徑:

[root@client ~]# ls /var/ftp/
image

三、改主配置文件 /etc/vsftpd/vsftpd.conf

關鍵的一些解釋一下:

anonymous_enable=NO
設定不允許匿名訪問

local_enable=YES
設定本地用戶可以訪問。注意:主要是爲虛擬宿主用戶,如果該項目設定爲NO那麼所有虛擬用戶將無法訪問

write_enable=YES
設定可以進行寫操作

local_umask=022
設定上傳後文件的權限掩碼

anon_upload_enable=NO
禁止匿名用戶上傳

anon_mkdir_write_enable=NO
禁止匿名用戶建立目錄

xferlog_enable=YES
設定開啓日誌記錄功能

connect_from_port_20=YES
設定端口20進行數據連接

chown_uploads=NO
設定禁止上傳文件更改宿主

xferlog_file=/var/log/vsftpd.log
vsftpd的服務日誌。注意,該文件必須要手動touch出來,必須注意給與該用戶對日誌的寫入權限(vsftpd服務宿主用戶),否則服務將啓動失敗

xferlog_std_format=YES
設定日誌使用標準的記錄格式

nopriv_user=vsftpd
vsftpd服務的宿主用戶vsftpd。必須注意與該服務相關的讀寫文件的讀寫權限問題

async_abor_enable=YES
設定支持異步傳輸功能

ascii_upload_enable=YES
ascii_download_enable=YES
設定支持ASCII模式的上傳和下載功能

ftpd_banner=Welcome to blah FTP service.
設定vsftpd的登陸標語

chroot_list_enable=NO
限定在自己的FTP主目錄裏邊,待會兒可以設置

pam_service_name=vsftpd
設定PAM服務下Vsftpd的驗證配置文件名。剛剛修改的是/etc/pam.d/下的vsftpd文件,可以自己新建文件,目錄要正確

userlist_enable=YES
設定userlist_file中的用戶將不得使用FTP
tcp_wrappers=YES
設定支持TCP Wrappers

 

好了,需要修改新增的如下:(具體根據需要而定)

anonymous_enable=NO
不允許匿名用戶登錄
anon_upload_enable=NO
不允許匿名用戶上傳
anon_mkdir_write_enable=NO
不允許匿名用戶建立目錄

chown_uploads=NO
設定禁止上傳文件更改宿主。

xferlog_file=/var/log/vsftpd.log
設定Vsftpd的服務日誌保存路徑

async_abor_enable=YES
設定支持異步傳輸功能。

ascii_upload_enable=YES
ascii_download_enable=YES
設定支持ASCII模式的上傳和下載功能也都開啓吧

ftpd_banner=Hello baby,Welcome to blah FTP service.

^_^,開個banner吧

chroot_list_enable=NO
限定在ftp主目錄

nopriv_user=vsftpd

支撐Vsftpd服務的宿主用戶

guest_enable=YES
設定啓用虛擬用戶功能
virtual_use_local_privs=YES
設定虛擬用戶的權限符合他們的宿主用戶
user_config_dir=/etc/vsftpd/vsftpd_config
設定虛擬用戶個人Vsftp的配置文件存放路徑。/etc/vsftpd/vsftpd_config裏面的文件都是虛擬用戶的專用配置文件,注意:配置文件名必須和虛擬用戶名相同

那我們就專門爲虛擬用戶建立一個配置文件目錄吧

四、建立虛擬用戶配置文件及後期處理

[root@client ~]# mkdir /etc/vsftpd/vsftpd_config
[root@client ~]# cd /etc/vsftpd/vsftpd_config/

[root@client vsftpd_config]# touch {develop,design,operate}

image

[root@client vsftpd_config]# vim develop

guest_enable=YES (在centos下yes必須爲小寫字母)
guest_username=ftp_develop
local_root=/var/ftp/develop
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=100000

image

這裏可以通過系統用戶權限和參數配置達到各種限制,爲了方便,三個組權限都一樣吧,那就copy了

image

image

注意:還有日誌文件沒有處理哦

[root@client vsftpd_config]# touch /var/log/vsftpd.log
[root@client vsftpd_config]# chown vsftpd.vsftpd /var/log/vsftpd.log

image

五、測試與排錯

實驗之前已關閉selinux和iptables。

1、重啓服務,未報錯

image

2、本地登錄測試、上傳測試

匿名用戶無法登錄;ok

image

指定用戶呢,可以登錄上傳文件(注意是不同用戶,上傳的不同文件)

image

image

image

注意vsftpd.conf裏面還有一項可能會導致一些問題哦:userlist_enable=YES (這裏是yes)

查看一下文件 /etc/vsftpd/user_list

image

如果有問題可以看看這個文件~

3、下載測試

這裏以develop爲例測試,其它配置一樣,結果也是一樣的,可以下載

Linux下:

image

Windows下:

image

OK,完成所要的功能了。暫時就這樣吧,先睡了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章