在linux中配置vsftpd 多用戶對應多目錄,使用虛擬用戶設置VSFTPD賬戶(無需數據庫工具)

在ubuntu中配置vsftpd 多用戶對應多目錄,使用虛擬用戶設置VSFTPD賬戶(無需數據庫工具)

參考連接

我想在我的服務器上安裝FTP服務器,我在網上查資料後,發現VSFTPD是最安全的,所以我就開始安裝使用它。 我測試過很多教程,但找不到任何全面詳細的教程,所以決定寫我自己的方法。在我的個人服務器上建立了VSFTPD服務,接下來跟着我的教程一步一步部署VSFTPD到我們的專用服務器。

安裝VSFTPD概要

  • 安裝vsftpd、PAM庫 htpasswd
  • 編輯/etc/vsftpd.conf和/etc/pam.d/vsftpd文件
  • 創建自定義用戶目錄(例如:/var/www/)
  • 使用 chmod 和 chown 設置正確的權限和組目錄
  • 創建擁有完全訪問到服務器的管理員用戶
  • 疑難解答

1. 安裝vsftpd(Very Secure FTP Deamon:非常安全的FTP守護進程)和 libpam-pwdfile 、apache2-utils 工具可以創建虛擬用戶

我想創建FTP用戶,但不想添加本地UNIX用戶(沒有shell訪問,沒有主目錄等)。一個PAM(Pluggable Authentication Modules將幫助您創建虛擬用戶。
sudo apt-get install vsftpd libpam-pwdfile apache2-utils

2. 編輯vsftpd.conf

首先,你需要備份原始文件

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

然後創建一個新的 vsftpd.conf 文件

sudo vim /etc/vsftpd.conf

複製並粘貼以下行。該文件應該只包含這些行

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd

# reserve TCP ports 2121-2142 for passive FTP
pasv_min_port=2121
pasv_max_port=2142

3. 註冊虛擬用戶

(adsbygoogle = window.adsbygoogle || []).push({}); 註冊使用htpasswd的用戶。創建一個文件夾的vsftpd然後把配置文件在裏面。
sudo mkdir /etc/vsftpd
然後
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
  • -c:如果文件不存在,將自動創建文件
  • -d:MD5 加密,你需要在Ubuntu 14.04中,該命令將提示輸入密碼。
如果你想以後添加新用戶,使用以下命令:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2

4. 配置PAM在/etc/pam.d/vsftpd

同樣,你需要備份最初的文件

sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

並創建一個新的 vsftpd 文件

sudo vim /etc/pam.d/vsftpd

複製並粘貼這兩行代碼(這個文件中應該只包含這兩行內容)。

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

5. 創建沒有shell訪問的本地用戶


(adsbygoogle = window.adsbygoogle || []).push({});
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
當用戶連接到FTP服務器時,它們將被用於管理對應用戶名字的權限目錄。

6. 重新啓動vsftpd

常見的方法是使用的init.d重啓守護進程,如下:
sudo /etc/init.d/vsftpd restart

或使用 service 命令重啓

sudo service vsftpd restart

7. 創建目錄


(adsbygoogle = window.adsbygoogle || []).push({});

根據配置的所有用戶將被放置到這個文件夾:/var/www/user1

您需要特別權利創建它們:根文件夾不能寫!

  • Folder / [root = /var/www/user1] => 555
    • Folder www [ /var/www/user1/www ] => 755
    • Folder docs [ /var/www/user1/docs ] => 755

注:在根目錄下的用戶**不能**創建文件或文件夾。

在vsftpd.conf中,我們有chroot_local_user = YES,使用戶無法看到他的文件夾以外的任何東西。對他來說,服務器看起來是這樣的:

登錄FTP vsftpd的chroot環境

因此,只要運行這些命令:

sudo mkdir /var/www/user1
sudo chmod -w /var/www/user1
sudo mkdir -p /var/www/user1/www /var/www/user1/docs
sudo chmod -R 755 /var/www/user1/www /var/www/user1/docs
sudo chmod -w /var/www/user1/docs
sudo chown -R vsftpd:nogroup /var/www/user1

備註:如果需要目錄只有只讀權限,使用chmod修改即可。

在 /var/www/user1 的文件夾已存在,或連接失敗。

現在,你可以嘗試用你的FTP客戶端連接,它一定會成功!如果沒有,你可以檢查排除故障部分。

8. 創建管理員用戶訪問整個服務器

要創建一個管理員用戶,我們需要註冊htpasswd的新用戶。

在這樣做之前,我會建議您檢查到該定義被某些用戶在/etc/ftpusers文件中未允許使用FTP連接。我認爲這只是爲本地用戶,而不是虛擬用戶,但以防萬一,不要選擇包含在此文件的名稱。說實話,vsftpd是夠複雜!

sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin

創建 /etc/vsftpd.chroot_list 文件,並把上邊用戶和密碼添加到這個文件(第一行用戶名,第二行密碼):

theadmin
you_password

現在,我們需要在 /etc/vsftpd.conf文件中添加一行,代碼如下:

chroot_list_enable=YES

 

加入這個命令後,意味着在/etc/vsftpd.chroot_list 裏的用戶,你不必創建一個像/var/www/theadmin的文件夾,用戶將登錄後應該顯示/home/vsftpd爲主目錄。

重新啓動服務器,你就大功告成了!

9. 匿名用戶訪問

修改 “/etc/vsftpd.conf” 文件即可:

anonymous_enable=YES
anon_root=/var/www/anonymous #此目錄可以自己創建,訪問權限也可以自定義

故障排除


(adsbygoogle = window.adsbygoogle || []).push({});

下面是我遇到了一些錯誤。

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

你的根目錄是可寫的,這是不允許的。檢查第7部分查看更多信息,你需要創建一個555根,755子文件夾

500 OOPS: cannot change directory:/var/www/theadmin if the folder doesnt exist

在/var/www/$USER 文件夾不存在,用正確的權限(不可寫)創建或添加用戶進入/etc/vsftpd.chroot_list(見第8部分)。不要忘了重新啓動服務器。

htpasswd: cannot create file /etc/vsftpd/ftpd.passwd

在/etc/vsftpd/ 文件夾已存在,htpasswd不會創建它。

vsftpd restart or stop error: “restart: Unknown instance”

這意味着你不能啓動守護進程,即使你有/etc/init.d/vsftpd啓動成功消息。它不會啓動,因爲你的配置是錯誤的。再次查看教程細節。

Error: Connection timed out after 20 seconds of inactivity

查看是否開啓 21端口並開啓 2121 - 2142 端口。

推薦閱讀:mysql 5個常用操作,添加用戶配置對應數據庫,開啓遠程訪問,修改密碼

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