1、安裝vsftp及相關依賴 (不能連互聯網的話就自己搭個建與系統匹配的yum源)
yum -y install vsftpd* pam* db4* (linux 6+)
yum -y install vsftpd* pam* libdb* (linux 7+)
2、建立相關用戶
a、vsftpd服務的宿主用戶
useradd vsftpd -s /sbin/nologin
默認的vsftpd的服務宿主用戶是root,但是這不符合安全性的需要。這裏建立名字爲vsftpd的用戶,用他來作爲支持vsftpd的服務宿主用戶。由於該用戶僅用來支持vsftpd服務用,因此沒有許可他登陸系統的必要,並設定他爲不能登陸系統的用戶。
b、vsftpd的虛擬宿主用戶
useradd virtual -d /var/www/html/ -s /sbin/nologin
chown -R virtual:virtual /var/www/html/
vsftpd的虛擬用戶並不是系統用戶,也就是說這些FTP的用戶在系統中是不存在的。他們的總體權限其實是集中寄託在一個在系統中的某一個用戶身上的,所謂vsftpd的虛擬宿主用戶,就是這樣一個支持着所有虛擬用戶的宿主用戶。由於他支撐了FTP的所有虛擬的用戶,那麼他本身的權限將會影響着這些虛擬的用戶,因此,處於安全性的考慮,也要非分注意對該用戶的權限的控制,該用戶也絕對沒有登陸系統的必要,這裏也設定他爲不能登陸系統的用戶。
3、配置vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=35000
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
#allow_writeable_chroot=YES #linux 7+下安裝的新版vsftpd需要加這個,linux 6+下不需要
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
4、生成vsftpd虛擬用戶數據庫文件
a、建立虛擬用戶名單文件
vim /etc/vsftpd/ftpuser.txt #格式:一行用戶名,一行密碼
user1
passwd1
user2
passwd2
b、生成虛擬用戶數據文件
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
chmod 666 vsftpd_login.db
5、配置PAM驗證文件
vim /etc/pam.d/vsftpd.vu
將以下內容加入到文件最前面
32位系統:auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/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
上一步建立的數據庫 vsftpd_login 在此處被使用,建立的虛擬用戶將採用PAM進行驗證,這是通過/etc/vsftpd/vsftpd.conf文件中的語句pam_service_name=vsftpd.vu來啓用的。
6、vsftpd虛擬用戶的獨立配置
mkdir -p /etc/vsftpd/vsftpd_user_conf
vim /etc/vsftpd/vsftpd_user_conf/user1
配置如下:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/software/www/user1 #提前建立好相應文件夾,並修改用戶和組爲virtual
7、重啓vsftpd服務
/etc/init.d/vsftpd restart
ps -ef | grep vsftpd #可以看到vsftpd進程在跑了
netstat -tlnp | grep vsftpd #配置的端口已監聽
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8、vsftpd維護
vim /etc/vsftpd/ftpuser.txt #添加新用戶,一行名字一行密碼
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
mkdir /software/www/newuser #創建用戶虛擬目錄
chown –R virtual:virtual /software/www/newuser
vim /etc/vsftpd/vsftpd_user_conf/newuser #新用戶獨立配置
/etc/init.d/vsftpd restart #重啓服務