FTP服務器的簡介
系統用戶
即系統本機的用戶。Linux通常不會針對實體用戶進行限制,所以實體用戶能夠針對整個文件
系統進行工做。但一般不但願他們經過FTP方式遠程訪問系統。
虛擬用戶
只能採用FTP方式使用系統的用戶,不能直接使用Shell登陸系統,即虛擬用戶,訪問服務器
時須要驗證。大多數FTP用戶是這類用戶。
匿名用戶
對於公共性質的服務器能夠提供匿名用戶訪問,用戶名:anonymous。但在使用匿名用戶時,
應對其進行儘量多的限制,權限較低,如:同時鏈接的用戶數量受限,訪問的文件數目受限,
不能上傳文件,容許操做的指令較少,設置匿用戶同時登入的最大聯機數量等。
FTP服務器的安裝
使用yum安裝vsftpd軟件包
#yum install vsftpd ftp
啓動服務並設置開機自啓
#systemctl start vsftpd.service
#systemctl enable vsftpd.service
設置防火牆與selinux機制
#firewall-cmd --permanent --zone=public --add-service=ftp
#firewall-cmd --reload
#setenforce 0
配置訪問
配置匿名用戶訪問FTP
ftp的配置文件
ftp的配置文件是:/etc/vsftpd/vsftpd.conf
設置匿名用戶訪問ftp:
anonymous_enable=YES
設置匿名用戶登陸ftp時不輸入密碼
設置匿名用戶登陸ftp時不輸入密碼:
no_anon_password=YES
ftpd_banner= welcome to our home! //設置提示內容
設置匿名用戶上傳、新建、刪除文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=yes
設置文件權限
chmod 777 pub 不推薦使用
setfacl -m u:ftp:rwx pub 推薦使用
設置匿名用戶上傳或新建文件的權限
若是使用vsftp的是本地用戶,則要修改配置文件中的 local_umask 的值;
若是使用vsftp的是虛擬用戶,則要修改配置文件中的 anon_umask 的值。
umask = 022 時,新建的目錄 權限是755,文件的權限是 644;
umask = 077 時,新建的目錄 權限是700,文件的權限時 600。
設置不容許系統用戶登陸,只能匿名用戶登陸
anonymous_enable=YES
local_enable=no
設置匿名用戶訪問ftp的默認目錄
anon_root=/var/ftp
anon_root=/var/public
注意:要修改vsftp服務器匿名用戶默認目錄時,不能夠將anon_root設置爲一個其餘帳號已有的家目錄,不然不能實現匿名用戶訪問ftp服務器。
配置系統用戶訪問FTP
設置系統用戶只能訪問本身的主目錄
設置系統用戶只能訪問本身的主目錄並具備全部權限,不容許切換到系統的其餘目錄
chroot_local_user=YES 控制用戶訪問路徑訪問本身的主目錄,不能切換到其餘目錄
allow_writeable_chroot=YES 容許寫入
ftpd_banner= welcome to our home!
max_clients=30 設置最大鏈接數
idle_session_timeout=600 設置超時時間
設置系統用戶訪問指定目錄
設置系統用戶訪問指定目錄,不容許切換到系統的其餘目錄,並具上傳、下載、新建、刪除的權限。
local_root=/mnt/public/ 設置系統用戶訪問ftp的默認目錄
write_enable=YES 容許寫入
chroot_local_user=YES 控制用戶訪問路徑訪問指定目錄,不能切換到其餘目錄
allow_writeable_chroot=YES 容許寫入
修改/mnt/public/目錄下的文件權限
基於本地用戶的訪問控制
默認狀況下
默認狀況下,ftp服務器中全部系統用戶均可以訪問ftp,如何來限定只有指定的系統用戶能夠訪問呢?vsftp中提供了兩個與系統用戶相關的配置文件:
/etc/vsftpd/ftpusers 提供了一份用於禁止登陸的ftp用戶列表(黑名單)。
此文件中包含的用戶將被禁止登陸vsftpd服務器,無論該用戶是否在
/etc/vfsftpd/user_list中出現。
/etc/vsftpd/user_list 提供了一份用於容許登陸的ftp用戶列表(白名單),
此文件中包含的用戶可能被禁止登陸,可能被容許登陸。
具體配置
具體在主配置文件vsftpd.conf中決定:
當存在userlist_enable=YES時,user_list文件生效。
當存在userlist_deny=YES時,則僅禁止列表中的賬戶登陸。
當存在userlist_deny=NO時,則容許列表中用戶登陸。
其中:ftpusers文件的優先級要高於user_list文件,即若是一個用戶同時存在
於兩個文件中,則被拒絕訪問ftp。
舉例:只讓ftpuser用戶訪問ftp,那麼能夠進行以下設置:
#vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES 啓用userlist用戶列表(系統默認設置)
userlist_deny=NO 只容許列表中的用戶登陸
#vim/etc/vsftpd/user_list
將容許登陸的用戶添加在最後
將服務重啓後,在客戶端測試,此時只有ftpuser用戶能夠訪問ftp
ftp日誌管理
日誌文件
Vsftp軟件搭建的FTP服務器的日誌文件的配置,在/etc/vsftpd.conf中找到:
xferlog_enable=YES 開啓FTP服務器記錄上傳下載的狀況
xferlog_std_format=YES 日誌格式
xferlog_file=路徑 指定日誌文件
默認爲:/var/log/xferlog
日誌文件輸出格式
(1)當前時間(爲本地時間),格式爲:DDD MMM dd hh:mm:ss YYYY
(2)傳輸時間:傳送文件所用時間,單位爲秒
(3)遠程主機名稱/IP:
(4)文件大小:傳輸文件的大小,單位爲byte
(5)文件名:傳輸文件名,包括路徑
(6)傳輸類型:a--以ASCII傳輸;b--以二進制文件傳輸
(7)特殊處理標誌:
_:不作任何特殊處理
c:文件是壓縮格式
u:文件是非壓縮格式
t:文件時tar格式
(8)傳輸方向:o 從FTP服務器想客戶端傳輸;i 從客戶端向FTP服務器傳輸
(9)訪問模式:a 匿名用戶;g 來賓用戶;r 系統中的用戶
(10)用戶名
(11)服務名:通常爲FTP
(12)認證方式:0 無; 1 RFC931認證
(13)認證用戶id:若是使用*,測表示沒法得到該id
(14)完成狀態:i 傳輸未完成;c表示傳輸已完成。
配置虛擬用戶訪問
安裝Vsftpd虛擬用戶須要用到的軟件及認證模塊
yum install pam* libdb-utils libdb* --skip-broken -y
建立虛擬用戶臨時文件/etc/vsftpd/ftpusers.txt,用戶名密碼格式
xxxxxx
123456
……
……
生成Vsftpd虛擬用戶數據庫認證文件,設置權限爲600
權限爲600 表示只有全部者能夠訪問
#db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
#chmod 600 /etc/vsftpd/vsftp_login.db
配置PAM認證文件:vim /etc/pam.d/vsftpd.vu
配置PAM認證文件:vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vsftp_login
account required pam_userdb.so db=/etc/vsftpd/vsftp_login
建立一個系統用戶,用於虛擬用戶映射
#useradd -s /sbin/nologin ftpuser
修改配置文件
修改配置文件:#vim /etc/vsftpd/vsftpd.conf
#pam_service_name=vsftpd
pam_service_name=vsftpd.vu
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
分別爲虛擬用戶建立私有的虛擬目錄與獨立的配置文件
#mkdir /home/ftpuser/techftp
#mkdir /etc/vsftpd/vsftpd_user_conf
#vim techftp
local_root=/home/ftpuser/techftp
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#mkdir /home/ftpuser/netftp
#vim netftp
local_root=/home/ftpuser/netftp
write_enable=YES
virtual_use_local_privs=NO #不具備可登陸用戶的權限
anon_world_readable_only=YES #可瀏覽目錄
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES