2019年5月5日 星期日

centos7 架設 vsftpd (virtual user 使用 db 檔案)

如果僅是提供不同user上傳、下載資料,通常不會允許使用機器上的local user,
可以避免建立帳號時的麻煩還有帳號流出的可能。
此時會使用 virtual user,提供一個帳號認證系統,與 local user 分開。

vsftpd是使用 pam (Linux可插可拔的認証模組)來提供帳號認證,因此更換 pam的設定,
就可以達到使用virtual user的功能。

1. 編輯使用帳號密碼:
  編輯 /etc/vsftpd/vuser.txt,一行帳號,一行密碼,sample如下:

      user1
      123456
      user2
      abcdef

 轉換成 DB:

      db_load -T -t hash -f ./vuser.txt ./vuser.db

 PS:轉換後,可以透過 file來檢查檔案型態是否正確。(檔案型態,應該為 Berkeley DB )
    file vuser.db

2. 編輯 pam 檔
  pam檔通常都會集中在 /etc/pam.d 下面,
  此處編輯一個專用的的pam檔,/etc/pam.d/vsftpd_vuser,內容如下:

    #%PAM-1.0
    auth required pam_userdb.so db=/etc/vsftpd/vuser
    account required pam_userdb.so db=/etc/vsftpd/vuser

 指定認證及帳號的部分使用剛剛建立的 /etc/vuser.db

3. 修改 vsftpd.conf 設定

    pam_service_name=vsftpd_vuser
    virtual_use_local_privs=YES
    guest_enable=YES
    guest_username=vuser
    user_sub_token=$USER
    local_root=/home/vuser/$USER
 
設定了對應的 pam 到 /etc/pam.d/vsftpd_vuser,並啟用 virtual user的功能。
virtual user 會以 guest 的身分登入,其中:guest_username=vuser
,會把對應的 guest 帳號轉換成 local user 的帳號 vuser 來使用,
後端需要先用 linux adduser 來建立 vuser 帳號,
並可透過 vuser這個帳號從後端調整設定相關的檔案權限。
user_sub_token=$USER,指定了登入的識別使用db中的帳號,
local_root=/home/vuser/$USER,指定登入後的預設目錄(根目錄)。
如果是 user1 登入,預設目錄會在 /home/vuser/user1,
請記得針對每個人的預設目錄路徑,建立好相對的目錄,否則登入會找不到目錄失敗。


沒有留言:

張貼留言