如果僅是提供不同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,
請記得針對每個人的預設目錄路徑,建立好相對的目錄,否則登入會找不到目錄失敗。
沒有留言:
張貼留言