我們登錄FTP有三種方式,匿名登錄、本地用戶登錄和虛擬用戶登錄。
匿名登錄:在登錄FTP時使用默認的用戶名,一般是ftp或anonymous。
本地用戶登錄:使用系統(tǒng)用戶登錄,在/etc/passwd中。
虛擬用戶登錄:這是FTP專有用戶,有兩種方式實現(xiàn)虛擬用戶,本地數(shù)據(jù)文件和數(shù)據(jù)庫服務器。
FTP虛擬用戶是FTP服務器的專有用戶,使用虛擬用戶登錄FTP,只能訪問FTP服務器提供的資源,大大增強了系統(tǒng)的安全。
使用vsftpd搭建FTP服務,并使用虛擬用戶登錄
1、安裝vsftpd
使用yum工具安裝vsftpd包,如下所示:
yum -y install vsftpd db4-utils
db4-utils包用來生成密碼庫文件
2、建立賬號
vsftpd默認可以支持使用系統(tǒng)賬號體系登錄,但那樣不太安全,所以建議使用虛擬賬號登錄。
建立虛擬登錄賬號
useradd virftp -s /sbin/nologin
建立與虛擬賬號相關的文件
vim /etc/vsftpd/vsftpd_login //內(nèi)容如下
zpy //用戶名
1qaz@WSX? //密碼
chmod 600 /etc/vsftpd/vsftpd_login //修改文件權限,提升安全級別
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //生成vsftpd密文密碼
mkdir /etc/vsftpd/vsftpd_user_conf //建立與虛擬賬號相關的目錄以及配置文件
3、創(chuàng)建與用戶對應的配置文件
cd /etc/vsftpd/vsftpd_user_conf
vim zpy //每個用戶都有一個自己的配置文件,文件名與用戶名一致,具體內(nèi)容如下:
local_root=/data/ftp //zpy用戶的家目錄
anonymous_enable=NO //禁用匿名登陸
write_enable=YES //可寫
local_umask=022 //指定umask
anon_upload_enable=NO //禁用匿名上傳
anon_mkdir_write_enable=NO //禁用匿名賬號可寫
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
mkdir /data/ftp //創(chuàng)建zpy家目錄
touch /data/ftp/test1.txt //創(chuàng)建文件用來測試
chown -R virftp.virftp /data/ftp
vim /etc/pam.d/vsftpd //在開頭添加如下兩行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
4、修改vsftpd的主配文件/etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf //修改如下內(nèi)容(新添加的內(nèi)容后面一定不能有空格,前車之鑒):
anonymous_enable=NO
再添加如下內(nèi)容:
chroot_local_user=YES //將所有用戶限制在主目錄
guest_enable=YES //開啟虛擬用戶
guest_username=virftp //虛擬用戶所映射的本地用戶
virtual_use_local_privs=YES //使虛擬用戶擁有和本地用戶一樣的權限
user_config_dir=/etc/vsftpd/vsftpd_user_conf //定義用戶配置文件的目錄
allow_writeable_chroot=YES
5、啟動vsftpd并測試
systemctl start vsftpd
systemctl enable vsftpd
用其他主機下載lftp測試
yum -y install lftp
lftp zpy@10.1.13.14
Password:
lftp zpy@10.1.13.14:~>ls
-rw-r--r-- 1 1003 1003 0 Dec 25 05:08 test1.txt