引用前篇 vsFTPd Server 安裝 及 使用設定 對 vsftpd 安裝後,在這篇要針對 Web 多人開發的環境來加入虛擬使用者、特殊權限。安全設置。
由於多人開發的環境,我需要開發人員可以用 nginx 的權限來登入,鎖定家目錄並且 rwx 權限為 nginx 以便可以直接上傳下載 Web 檔案
在此篇將不再採用 /etc/passwd 為預設帳號,將設定虛擬使用者帳號,並且用 db file 的方式存放帳號密碼讓 ftp 更安全
設定檔都沿用前篇的設定,在進行以下修改或添加
Step.1 建立虛擬使用者帳號密碼檔
$ vim /etc/vsftpd/virtualuser #檔案格式為一行帳號、一行密碼 nick nick-pwd eric pwd-eric
此檔僅用於產生 db file 使用,為安全考量使用後請刪除。
Step.2 產生 db.file 帳號密碼檔
$ db_load -T -t hash -f /etc/vsftpd/virtualuser /etc/vsftpd/virtualuser.db $ chmod 600 /etc/vsftpd/virtualuser.db
Step.3 修改 vsftpd.conf 公用設定檔
$ vim /etc/vsftpd.conf one_process_model=no \\不允許每個使用者都擁有一支process,當使用者量大的時候會造成Server很大的負擔 pasv_min_port=64500 pasv_max_port=65000 guest_enable=YES virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/user_conf \\虛擬使用者設定檔目錄位置
Step.4 建立虛擬使用者設定檔
$ mkdir /etc/vsftpd/user_conf 建立屬於nick的設定檔 $ vim /etc/vsftpd/user_conf/nick local_root=/usr/share/nginx/html guest_username=nginx idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000 eric的設定檔,以此類推 $ vim /etc/vsftpd/user_conf/eric local_root=/Voluem guest_username=nginx idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000
- local_root 指定 user 家目錄
- guest_username 登入時的權限,對應於 /etc/passwd 內的使用者帳號
Step.5 修改 vsftpd 的pam驗證方式
$ vim /etc/pam.d/vsftpd #x64環境 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser #如果你是x86環境請用以下 auth required /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser
Step.6 重啟 vsftpd 後測試登入權限確定為 guest_username 所指定的就搞定了!
$ service vsftpd restart $ cat /var/log/secure | grep vsftpd Aug 4 10:34:54 Master vsftpd[24119]: pam_userdb(vsftpd:auth): user 'nick' granted access