在VSFTP中,虛擬用戶認證使用的是單獨的口令庫文件(pam_userdb),由可插入認證模塊(PAM)認證。使用這種方式只能訪問服務器爲其提供的FTP服務,而不能訪問系統的其它資源,由此來提高系統的安全性。並且配置更加靈活。
下面介紹配置過程。注意防火牆和selinx
1.生成虛擬用戶口令文件。
# vim /etc/vsftpd/login.txt
ftpu1#用戶名
1234#密碼
ftpu2
qwer
ftpu3
5678
2.生成口令庫文件,並修改其權限:
# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db # chmod 600 /etc/vsftpd/vsftpd_login.db
3.編輯虛擬用戶的PAM文件。清空並添加以下內容:
# > /etc/pam.d/vsftpd # vim /etc/pam.d/vsftpd
32位系統:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
64位系統:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
說明:/etc/vsftpd/vsftpd_login文件爲第2部中生成的虛擬用戶的db文件,不可加.db。
4.建立虛擬用戶(www),不允許登錄系統
# useradd -M -s /sbin/nologin www
5.編輯vsftpd配置文件
# /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允許匿名訪問
local_enable=YES #本地用戶可以訪問,如果爲NO 則所有虛擬用戶都將不能訪問,因爲虛擬用戶的訪問在主機上其實是以本地用戶訪問的
local_umask=022
xferlog_enable=YES#開啓日誌
xferlog_file=/var/log/vsftpd.log#日誌保存路徑
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
one_process_model=NO
chroot_local_user=YES#限定用戶不可立刻家目錄
ftpd_banner=Welcom to lst FTP_server.
anon_world_readable_only=NO
guest_enable=YES#開啓虛擬用戶功能
guest_username=www#指定虛擬用戶的宿主內置用戶
pam_service_name=vsftpd #指定pam認證文件名,第3部中的/etc/pam.d/vsftpd
user_config_dir=/etc/vsftpd/vuser.conf.d #虛擬用戶獨立配置文件
6.創建每個虛擬用戶的獨立配置文件。
# mkdir /etc/vsftpd/vuser.conf.d # vim /etc/vsftpd/vuser.conf.d/ftpu1
local_root=/www/ftpsite/ftpu1 #虛擬用戶ftpu1的根目錄
anon_world_readable_only=NO
anon_umask=022
write_enable=YES #可寫權限
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
7.創建虛擬用戶的家目錄,並賦予權限
# mkdir /www/ftpsite/ftpu1 # cd /www/ftpsite/ # chown -R www.www /ftpu1/ #設置文件所有者.所有者爲本地用戶www # chmod 700 /www/ftpsite/ftpu1
8.重新啓動VSFTP:
# service vsftpd restart
9.本地測試
# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 Welcom to my FTP server.
Name (127.0.0.1:root): ftpu1#使用虛擬用戶ftpu1登錄
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
10.添加FTP用戶的步驟
1.在/etc/vsftpd/login.txt中添加用戶名和密碼
2.更新口令庫文件
# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
3.創建虛擬用戶的獨立配置文件,文件名與虛擬用戶名相同
# vim /etc/vsftpd/vuser.conf.d/ftpuN
4.爲新用戶新建家目錄並修改權限