本文由ilanniweb提供友情贊助,首發於爛泥行天下linux
想要得到更多的文章,能夠關注個人微信ilanniweb。web
1、實際問題ubuntu
在使用vsftpd過程當中,咱們會常常發現vsftpd在默認狀況下一個用戶(不管是系統用戶仍是虛擬用戶)只能擁有一個目錄,通常是根目錄。centos
若是此時再要向該用戶添加其它目錄的話,好比系統的其餘目錄也須要此用戶訪問,那麼就沒法直接添加了。服務器
vsftpd不像FileZilla_Server等相似的ftp服務器軟件同樣能夠直接給用戶添加多目錄,以下:微信
因此咱們只能藉助其餘方式實現這個功能,在此咱們使用的是mount --bind命令。測試
注意:mount --bind命令存在linux內核2.4版本之後的linux系統中。spa
要想把vsftpd一個用戶添加多個目錄的話,咱們能夠經過mount --bind命令來達到要求。.net
mount --bind命令其實就是一個掛載命令,它的主要做用是將一個目錄中的內容掛載到另外一個目錄上。ip
有關mount --bind命令的使用,咱們能夠經過查看mount的幫助文檔得到。以下:
man mount
根據權限的不一樣,咱們把vsftpd的這個要求分爲可讀寫和只讀這兩種狀況,下面分別介紹下。
PS:如下實驗環境均是基於《爛泥:ubuntu下vsftpd虛擬用戶配置》這篇文章的環境進行。
固然這個vsftpd單用戶多目錄的功能在ubuntu和centos均是可使用的。
vsftpd的虛擬用戶爲ailanni,其對應的系統用戶爲wangxy。
如今要求新建一個目錄/write,ailanni用戶要對/write目錄具備可讀寫權限。
首先建立/write目錄,並修改所屬的用戶及用戶組爲wangxy系統用戶。以下:
sudo mkdir /write
sudo chown wangxy:wangxy -R /write/
由於虛擬用戶ailanni登陸到vsftpd要看到write這個目錄,因此須要咱們在ailanni用戶的根目錄下也建立一個write目錄並修改所屬的用戶及用戶組爲wangxy系統用戶。
sudo mkdir /www/write
sudo chown wangxy:wangxy -R /www/write/
以上相關的目錄建立完畢後,如今咱們來經過mount --bind命令進行掛載。以下:
sudo mount --bind /write/ /www/write/
mount
上述命令中sudo mount --bind /write/ /www/write/命令的意思是把/write/目錄掛載到/www/write/目錄下。
經過上圖,咱們能夠很明顯的看到/write/已經掛載到了/www/write/下,而且是可讀寫掛載的。
以上命令在服務器重啓後是不會自動執行的,若是要使上述命令自動進行掛載,咱們能夠把上述命令放在/etc/fstab或者/etc/rc.local文件中。
放在/etc/fstab文件中,形式以下:
sudo vi /etc/fstab
/write/ /www/write/ none bind 0 0
放在/etc/rc.local文件中,形式以下:
sudo vi /etc/rc.local
mount --bind /write/ /www/write/
如今要求新建一個目錄/readonly, ailanni用戶要對/readonly目錄具備只讀權限。
首先建立readonly目錄,並修改所屬的用戶及用戶組爲wangxy系統用戶。以下:
sudo mkdir /readonly
sudo chown wangxy:wangxy -R /readonly/
由於虛擬用戶ailanni登陸到vsftpd要看到readonly這個目錄,因此須要咱們在ailanni用戶的根目錄下也建立一個readonly目錄並修改所屬的用戶及用戶組爲wangxy系統用戶。
sudo mkdir /www/readonly
sudo chown wangxy:wangxy -R /www/readonly/
以上相關的目錄建立完畢後,如今咱們來經過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/爲只讀權限。
經過上圖,咱們能夠很明顯的看到/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/
以上所有掛載完畢後,咱們如今開始測試相關權限。
如今開始測試vsftpd對各個目錄的權限,下面開始對讀寫和只讀權限分別進行測試。
使用FlashFXP鏈接vsftpd服務器,以下:
隨便上傳一個文件到write目錄,以下:
經過上圖,咱們能夠很明顯的看出。咱們如今上傳了一個ks.cfg文件到write目錄下了。
如今咱們在登錄vsftpd服務器切換到/write目錄下,看看剛剛上傳的文件ks.cfg是否在此目錄下。以下:
經過上圖,咱們能夠很明顯的看出剛剛上傳的文件ks.cfg已經在/write目錄下了,說明寫入權限是沒有問題的。
如今來測試只讀權限,如今咱們仍是上傳剛剛那個文件ks.cfg到readonly目錄下。以下:
經過上圖,咱們能夠很明顯的看出剛剛上傳的文件ks.cfg沒法上傳到readonly目錄,FlashFXP提示553錯誤,說明只讀權限是沒有問題的。
到此有關vsftpd單用戶多目錄的配置到此結束。