ftp有兩種工做模式,一種是主動鏈接,一種是被動鏈接服務器
主動模式:session
客戶端打開隨機端口(如5150)鏈接對方的21號端口,服務端21號端口去響應ide
客戶端打開隨機端口+1(2227+1=2228),而後由服務端的20端口去連接5151號端口工具
缺點是客戶端的防火牆很差設置spa
被動模式:日誌
若是客戶端裝了防火牆,客戶大於1024的端口是關閉的,這樣子就只能用被動模式了blog
客戶端首先發起請求,服務器段經過21好端口回覆而且附加一個隨機端口(3268),服務端打開一個1023的隨機端口(5050),客戶使用發起會話的端口+1的端口(5051)去鏈接服務端的隨機端口(3268)ci
在使用客戶端工具鏈接時,咱們會受到相應碼,這些響應碼的定義以下get
1xxit |
服務器的相應信息 |
2xx |
正確相應信息 |
3xx |
正常相應,但不完成,錯作過程還沒有完成,需進一步補充 |
4xx |
客戶端錯誤 |
5xx |
服務器端錯誤 |
咱們再來看看vsftp支持的用戶類型
有三類用戶:
1,匿名用戶:事實上是服務器端自動映射的一個系統用戶,他自動映射爲ftp用戶,家目錄爲/var/ftp/,全部匿名用戶登陸即到/var/ftp,一般被禁用在家目錄下
2,本地用戶:/etc/passwd中的用戶,默認ID號小於500的都禁止訪問ftp
3,虛擬用戶,服務器端自動映射的一個系統用戶,多個虛擬用戶映射爲同一個虛擬用戶
咱們來看vsftp的使用,安裝
[root@wwwa.com]# yum install vsftp
看看都自動裝了那些文件
/etc/logrotate.d/vsftpd//完成日誌滾動的文件
/etc/pam.d/vsftpd//在這裏修改能夠選擇使用匿名用戶,本地用戶,或者虛擬用戶
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf//主配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd//執行程序
咱們看看vsftp的文件配置
anonymous_enable=YES//使用容許匿名用戶使用FTP
local_enable=YES//是否容許本地用戶登錄
write_enable=YES. //是否本地用戶有上傳權限
local_umask=022 //上傳的時候使用的反掩碼
anon_upload_enable=YES//匿名用戶是否可上傳
anon_mkdir_write_enable=YES //是否容許匿名用戶建立文件夾
anon_upload_enable=YES#//是否匿名用戶上傳文件
anon_mkdir_write_enable=YES//匿名用戶具備建立目錄的權限
Anon_other_write_enable=YES//其餘權限,但是設置文件的屬主屬組,刪除等操做
xferlog_file=/var/log/xferlog//記錄傳輸日誌內容的
idle_session_timeout=600//命令鏈接的超時時間
data_connection_timeout=120//數據鏈接的超時時間
chroot_local_user=YES// 是否將用戶鎖定在家目錄下
chroot_list_enable=YES//是否將列表內容鎖定在家目錄下
chroot_list_file=/etc/vsftpd/chroot_list //指定白名單和黑名單的位置,和上一條連用
配置好文件後啓動便可service vsftpd start