2019年6月15日 星期六

centos7 架設 vsftpd (virtual user 使用 mysql 與 local account 並存)

先前使用過 mysql 當作帳號驗證,若想要混合 linux local account 及 mysql 中的帳號,需要考慮兩個部分。1. 登入認證。 2. 目錄及權限。

登入認證:
  考慮使用者先使用 mysql 驗證,若無法通過則使用原來的 linux 帳號認證,因此 pam 檔使用原先兩個 pam 混合。需要注意式 mysql 的部分,required 要更換成 sufficient,也就是 mysql 的認證通過後,就不再檢查後續的認證。

  編輯 pam 檔 /etc/pam.d/vsftpd_mix

#%PAM-1.0
auth       sufficient pam_mysql.so db=vsftpd user=vsftpd
  passwd=42fdsFDE3$ host=localhost table=accounts
  usercolumn=username passwdcolumn=password crypt=3
account    sufficient pam_mysql.so db=vsftpd user=vsftpd
  passwd=42fdsFDE3$ host=localhost table=accounts
  usercolumn=username passwdcolumn=password crypt=3
session    optional     pam_keyinit.so    force revoke
auth       required pam_listfile.so item=user sense=deny
  file=/etc/vsftpd/ftpusers onerr=succeed
auth       required pam_shells.so
auth       include password-auth
account    include password-auth
session    required     pam_loginuid.so
session    include password-auth

並在 vsftpd.conf 中,調整設定:

pam_service_name=vsftpd_mix

目錄及權限:
  原先使用 mysql 中 user時,vsftpd.conf 增加了以下設定:

virtual_use_local_privs=YES
guest_enable=YES
guest_username=vuser
user_sub_token=$USER
local_root=/home/vuser/$USER

這些項目僅能針對 virtual user,因此利用 user_config_dir的設定,依照登入帳號,如果是 local account,就反向取消這些設定。

vsftpd.conf 增加設定

user_config_dir = /etc/vsftpd/user_conf

在 /etc/vsftpd/user_conf 下面,針對每個 local account 增加設定檔,例如 local account : xyz
增加 /etc/vsftpd/user_conf/xyz,內容為

virtual_use_local_privs=NO
guest_enable=NO
user_sub_token=$USER
local_root=/home/$USER

PS:亦可反向思考,local account的設定寫在 vsftpd.conf中,每個 virtual user 建立一個檔案在 /user_conf 之下。可考慮哪種方式比較容易處理。

沒有留言:

張貼留言