如果你已經對pam有所瞭解,請跳過,我知道的可能還不如你多。你不感興趣也請跳過,因為不看這個也可配置。
使用者 <-> vsftpd <-> PAM模組 <-> 使用者和密碼資料庫
vsftpd用了一種很聰明同時也是unix/linux規範的方法來認證使用者,就是PAM。大家對於PAM,也許有些陌生,但是一直在用。所謂PAM,英文是:Pluggable Authentication Modules,可拔插認證模 塊(不知道這樣翻譯對不對)。看見plug這個關鍵字,就知道是很靈活的。
現在幾乎所有daemon程式一般都是用PAM來進行認證的,包括telnet/sshd/imapd,甚至你的login,都是用PAM
PAM的最大好處是靈活。它不管你的使用者和密碼用什麼資料格式儲存(資料庫也好,通常用的密碼檔案也好),只要有相應的PAM模組就可以儲存。比如說,大家不僅可以用vsftpd + PgSQL做使用者登陸 驗證,只要你喜歡你還可以用MySQL,Oracle,LDAP資料庫儲存使用者資料,只要有相應的PAM就可以。所有的daemon都可以用一個後台資料庫來做使用者驗證登陸,包括telnet/sshd等等。
1.系統版本為centos6.0,直接用yum來安裝vsftpd
[root@localhost ~]#yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp //安裝軟體和vsftpd
2.[root@localhost ~]#chkconfig vsftpd on//開機2345啟動vsftpd服務
3.[root@localhost ~]#cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1//備份一下vsftpd.conf為vsftpd.conf.1
4.[root@localhost ~]#grep -v "#" /etc/vsftpd/vsftpd.conf.1>/etc/vsftpd/vsftpd.conf//去除#號重新導向到/etc/vsftpd/vsftpd.conf檔案中。
5.[root@localhost ~]#cat /etc/vsftpd/vsftpd.conf//vsftpd.conf內容如下:
anonymous_enable=NO#設定不允許匿名訪問
local_enable=YES#設定本機使用者可以訪問。註:如使用虛擬宿主使用者,在該項目設定為NO的情況下所有虛擬使用者將無法訪問。
#chroot_list_enable=YES #使使用者不能離開主目錄我這句是沒加入的加入就登入不了不知道為什嗎?
write_enable=YES
local_umask=022//產生掩碼為022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log#設定vsftpd的服務日誌儲存路徑。注意,該檔案預設不存在。必須要手動touch出來
xferlog_std_format=YES
ascii_upload_enable=YES #允許使用ASCII模式上傳
ascii_download_enable=YES #設定支援ASCII模式的上傳和下載功能。
listen=YES
guest_enable=YES#設定啟用虛擬使用者功能
guest_username=vritual#指定虛擬使用者的宿主使用者。-RHEL/CentOS中已經有內建的ftp使用者了我這裡是自己建立的vritual
pam_service_name=vsftpd#PAM認證檔案名稱。PAM將根據/etc/pam.d/vsftpd進行認證
user_config_dir=/etc/vsftpd/vuser_conf#設定虛擬使用者個人vsftp的RHEL/CentOS FTP服務檔案存放路徑。存放虛擬使用者個性的CentOS FTP服務檔案(設定檔名=虛擬使用者名稱)
virtual_use_local_privs=YES