爛泥:vsftpd單用戶多目錄配置

本文由ilanniweb提供友情贊助,首發於爛泥行天下linux

想要得到更多的文章,能夠關注個人微信ilanniweb。web

1、實際問題ubuntu

在使用vsftpd過程當中,咱們會常常發現vsftpd在默認狀況下一個用戶(不管是系統用戶仍是虛擬用戶)只能擁有一個目錄,通常是根目錄。centos

若是此時再要向該用戶添加其它目錄的話,好比系統的其餘目錄也須要此用戶訪問,那麼就沒法直接添加了。服務器

vsftpd不像FileZilla_Server等相似的ftp服務器軟件同樣能夠直接給用戶添加多目錄,以下:微信

clip_image002

因此咱們只能藉助其餘方式實現這個功能,在此咱們使用的是mount --bind命令。測試

注意:mount --bind命令存在linux內核2.4版本之後的linux系統中。spa

2、解決方法

要想把vsftpd一個用戶添加多個目錄的話,咱們能夠經過mount --bind命令來達到要求。3d

mount --bind命令其實就是一個掛載命令,它的主要做用是將一個目錄中的內容掛載到另外一個目錄上。blog

有關mount --bind命令的使用,咱們能夠經過查看mount的幫助文檔得到。以下:

man mount

clip_image003

根據權限的不一樣,咱們把vsftpd的這個要求分爲可讀寫和只讀這兩種狀況,下面分別介紹下。

PS:如下實驗環境均是基於《爛泥:ubuntu下vsftpd虛擬用戶配置》這篇文章的環境進行。

固然這個vsftpd單用戶多目錄的功能在ubuntu和centos均是可使用的。

vsftpd的虛擬用戶爲ailanni,其對應的系統用戶爲wangxy。

2.1 可讀寫掛載

如今要求新建一個目錄/write,ailanni用戶要對/write目錄具備可讀寫權限。

首先建立/write目錄,並修改所屬的用戶及用戶組爲wangxy系統用戶。以下:

sudo mkdir /write

sudo chown wangxy:wangxy -R /write/

clip_image004

由於虛擬用戶ailanni登陸到vsftpd要看到write這個目錄,因此須要咱們在ailanni用戶的根目錄下也建立一個write目錄並修改所屬的用戶及用戶組爲wangxy系統用戶。

sudo mkdir /www/write

sudo chown wangxy:wangxy -R /www/write/

clip_image005

以上相關的目錄建立完畢後,如今咱們來經過mount --bind命令進行掛載。以下:

sudo mount --bind /write/ /www/write/

mount

上述命令中sudo mount --bind /write/ /www/write/命令的意思是把/write/目錄掛載到/www/write/目錄下。

clip_image006

經過上圖,咱們能夠很明顯的看到/write/已經掛載到了/www/write/下,而且是可讀寫掛載的。

以上命令在服務器重啓後是不會自動執行的,若是要使上述命令自動進行掛載,咱們能夠把上述命令放在/etc/fstab或者/etc/rc.local文件中。

放在/etc/fstab文件中,形式以下:

sudo vi /etc/fstab

/write/ /www/write/ none bind 0 0

clip_image007

放在/etc/rc.local文件中,形式以下:

sudo vi /etc/rc.local

mount --bind /write/ /www/write/

clip_image008

2.2 只讀掛載

如今要求新建一個目錄/readonly, ailanni用戶要對/readonly目錄具備只讀權限。

首先建立readonly目錄,並修改所屬的用戶及用戶組爲wangxy系統用戶。以下:

sudo mkdir /readonly

sudo chown wangxy:wangxy -R /readonly/

clip_image009

由於虛擬用戶ailanni登陸到vsftpd要看到readonly這個目錄,因此須要咱們在ailanni用戶的根目錄下也建立一個readonly目錄並修改所屬的用戶及用戶組爲wangxy系統用戶。

sudo mkdir /www/readonly

sudo chown wangxy:wangxy -R /www/readonly/

clip_image010

以上相關的目錄建立完畢後,如今咱們來經過mount --bind命令進行掛載。以下:

sudo mount --bind /readonly/ /www/readonly/

sudo mount -o remount,ro /www/readonly/

mount

上述命令中sudo mount --bind /readonly/ /www/readonly/命令的意思是把/readonly/目錄掛載到/www/readonly/目錄下。

sudo mount -o remount,ro /www/readonly/命令的意思是掛載/www/readonly/爲只讀權限。

clip_image011

經過上圖,咱們能夠很明顯的看到/readonly/已經掛載到了/www/readonly/下,而且是隻讀掛載的。

注意:mount --bind命令的只讀掛載與讀寫掛載是不一樣的。

以上命令在服務器重啓後是不會自動執行的,若是要使上述命令自動進行掛載,咱們能夠把上述命令放在/ etc/rc.local文件中,而只讀掛載命令不能放在/etc/fstab文件中。

通過屢次測試只讀掛載放在/etc/fstab文件中vsftpd用戶還具備寫入權限,因此只能放在/etc/rc.local文件中。

放在/etc/rc.local文件中,形式以下:

sudo vi /etc/rc.local

mount --bind /readonly/ /www/readonly/

mount -o remount,ro /www/readonly/

clip_image012

以上所有掛載完畢後,咱們如今開始測試相關權限。

3、測試

如今開始測試vsftpd對各個目錄的權限,下面開始對讀寫和只讀權限分別進行測試。

3.1 測試讀寫權限

使用FlashFXP鏈接vsftpd服務器,以下:

clip_image013

隨便上傳一個文件到write目錄,以下:

clip_image014

經過上圖,咱們能夠很明顯的看出。咱們如今上傳了一個ks.cfg文件到write目錄下了。

如今咱們在登錄vsftpd服務器切換到/write目錄下,看看剛剛上傳的文件ks.cfg是否在此目錄下。以下:

clip_image015

經過上圖,咱們能夠很明顯的看出剛剛上傳的文件ks.cfg已經在/write目錄下了,說明寫入權限是沒有問題的。

3.2 測試只讀權限

如今來測試只讀權限,如今咱們仍是上傳剛剛那個文件ks.cfg到readonly目錄下。以下:

clip_image016

經過上圖,咱們能夠很明顯的看出剛剛上傳的文件ks.cfg沒法上傳到readonly目錄,FlashFXP提示553錯誤,說明只讀權限是沒有問題的。

到此有關vsftpd單用戶多目錄的配置到此結束。

相關文章
相關標籤/搜索