ftp:file transfer protocol, 監聽21端口
文件傳輸協議,工作在應用層
明文協議:認證及數據傳輸;
ftp實現方式:
服務端實現:vsftpd pureftpd proftpd vsftpd是默認在光盤上自帶的
客戶端實現:
linux:ftp lftp
windows:cuteftp Filezilla Flashfxp
ftp連接類型:
命令連接:傳輸指令
數據連接:傳輸連接
工作方式:站在服務器端的角度描述
主動模式:服務器向客戶端發起數據傳輸請求
服務器端口:固定
客戶端端口:隨機
被動模式:客戶端向服務器端發起數據傳輸請求
服務器端口:半隨機,有客戶端向21號端口發送了連接請求,此時服務器會發送兩個數字,這兩個數字是服務器端新開啓的服務端口除以256得的商值和餘數。由此客戶端可以計算出服務器端的端口號。
ftp用戶分類:
資源位於用戶的家目錄下/var/ftp/
匿名用戶:(映射至某一固定的系統用戶) 匿名用戶的用戶名爲ftp、vsftp
本地用戶:(系統用戶) root及系統用戶(0-999);操作系統上的每一個用戶都是本地用戶,我們不允許訪問ftp服務器
虛擬用戶:映射入某操作系統上的某個用戶
nsswitch:名稱服務轉換
PAM:插入式認證模塊。
數據傳輸格式:
文本格式:binary
二進制格式:ascll
數據傳輸是通過線纜流式化傳輸的;傳輸圖片也同樣傳輸的字符串,到本地之後,通過這個字符調用相對應的圖片。
或者是傳輸過程中再加一個說明文檔,告訴對方如何將數據流重組。
vsftpd安裝方法:
步驟一
vftpd 是centos自帶的,短小精悍,監聽21號端口
~]# yum info vsftpd 查看屬性
~]# yum install vsftpd
/usr/sbin/vsftpd 程序
/etc/vsftpd/vsftpd.conf 配置文件
/etc/pam.d/vsftpd 因爲基於pam進行認證,所以在pam下也有一個配置文件
/var/ftp/ 用戶家目錄
步驟二
CentOS 6 :
/etc/rc.d/init.d/vsftpd <--啓動服務腳本
chkconfig vsftpd on <--啓動服務永久開啓
CentOS 7
/usr/lib/systemd/system/vsftpd.server
systemctl enable vstfpd.service <--永久開啓
getenforce 關閉selinux
步驟三:
測試:ftp://172.18.64.70/pub
步驟四:
lftp -u centos,magedu 172.18.64.70 <--創建centos用戶密碼爲magedu,使用此用戶訪問ftp服務->lcd /etc 切換到centos用戶的etc目錄->put fstab 將fstab文件上傳到ftp上
步驟五:對匿名用戶控制
開啓匿名用戶的上傳、創建、刪除及重命名功能
對用戶權限進行限制,建議先備份配置文件
~]# vim /etc/vsftpd/vsftpd.conf
~]# directive=value <--配置文件書寫格式必須頂格寫
匿名用戶配置方法:此處我們要實現匿名用戶有上傳權限
anonymous_enable=YES <--是否啓用匿名用戶 想關閉單純註釋掉是沒有用的
anon_upload_enable=YES <--控制匿名用戶的上傳權限,依賴於write_enable=YES
write_enable=YES <--是否允許通過ftp協議修改文件系統上的數據指令,此命令全局生效,所以一定要處於開啓狀態
anon_mkdir_write_enable=YES <--開啓匿名用戶創建目錄的權限,默認關閉
anon_other_write_enable=YES <--定義匿名用的刪除及重命名權限
生效需重載:systemctl restart vsftpd.service
~]# cd /var/ftp/
~]# chown ftp upload 將屬主改爲ftp
測試:使用172.18.64.71這臺主機
~]# lftp 172.18.64.70/upload <--因爲我們只給upload目錄修改了屬主
~]# lcd /etc/ 切換到70這臺主機的/etc/目錄下
~]# put fstab 上傳文件成功
步驟六:對本地用戶控制
本地用戶:
(1)local_enable=YES <--是否允許本地用戶可以登陸ftp,如果關閉即只開放匿名用戶
注意:所有非匿名用戶的生效,都依賴於此命令
(2)local_umask=022 <--本地用戶上傳的文件權限掩碼,應該設置爲077,本地用戶上傳的只有本地用戶可以查看
目錄消息
(3)dirmessage_enable=YES <--目錄消息顯示,用戶 第一次進入目錄時,vsftpd會查看.message文件,並將其內容顯示給用戶。message_file指定文件路徑,而不使用默認的.message;
數據傳輸日誌
(4)xferlog_enable=YES <--是否打開上傳下載的日誌默認路徑/var/log/vsftpd.log 不建議啓用
(5)xferlog_file=/var/log/vsftpd.log <--定義傳輸日誌文件的文件名
數據傳輸模式:
(6)connect_from_port_20 我們服務器是否能夠工作於主動模式。但是取決於客戶端是否支持,如果支持就主動,不支持就被動
修改匿名用戶上傳的文件的屬主:
chown_uploads 控制匿名用戶上傳的文件,是不是要改變其默認屬主屬組,如果不改就是匿名用戶映射的系統用戶ftp
chown_username: 啓用chown_uploads時,將文件屬主修改爲此指令指定的用戶,默認爲root
chown_upload_mode 設定匿名用戶上傳的文件的權限,默認爲600
設定空閒會話超時時長:
idle_session_timeout 定義任何一個遠程連接建立起以後,部在活躍了,多久斷開,默認爲300s
命令連接的監聽端口
listen_port 默認爲21 可能默認沒有設置,要手動設置
設定連接及傳輸速率
local_max_rate 默認最大傳輸速率,
默認最大連接數
max_clients 默認2000個 0表示無限制
單個ip所允許的最大連接數
max_per_ip
設定匿名用戶的最大傳輸速率
anon_max_rate
主動數據傳輸模式下 服務器連接客戶端的超時時間
idle_connection_timeout
被動數據傳輸模式下 服務器連接客戶端的超時時長
data_connection_timeout
只以文本格式上傳,不能開啓;除非你確定自己只上傳文本文件
ascii_upload_enable=YES
大條幅:
ftpd_banner=Welcome 每次連接ftp服務器都會顯示一些信息
禁錮所有本地用戶,鎖在自己家目錄下
chroot_local_user=YES <--禁錮所有本地用戶
注意:要求用戶對家目錄,沒有寫權限
禁錮列表中的用戶,與上方式不能同時使用
vim /etc/vsftpd/chroot_list
每行一個用戶名
chroot_list_file=/etc/vsftpd/chroot_list <--此選項在主配置文件中
是否啓用用戶列表
/etc/vsftpd/ftpusers <--禁止某些用戶登錄,只是一個黑名單
userlist_enable=YES <--啓用時,vsftpd將加載一個由userlist_file指令指定的用戶列表文件;此用戶中的用戶是否能訪問vsftpd服務取決於userlist_deny指令
userlist_deny=YES 此時user_list爲黑名單
userlist_deny=NO 此時user_list爲白名單
/etc/vsftpd/user_list/ <--這是user_list的目錄