一、簡介
1、簡介
File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲“文件傳輸協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種哦協議以傳輸文件。在FTP的使用當中,用戶經常遇到兩個概念:“下載(Download)”和“上傳(Upload)”。
下載文件就是將文件從遠程主機拷貝到自己的計算機上;
上傳文件就是將文件從自己的計算機拷貝到遠程主機上。
支持FTP協議的服務器就是FTP服務器。
2、工作模式
主動模式:
FTP客戶機向服務器的FTP控制端口(默認是21)發送請求,服務器接受連接,建立一 條命令鏈路,當需要傳送數據時候,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了某個端口,你過來連接我。”於是服務器從20端口向客戶端的改端口發送連接請求,建立一條數據鏈路來傳送數據。在數據鏈路建立的過程中是服務器主動請求,所以稱爲主動模式。
FTP 主動模式(命令行是主動模式)
服務器用20號端口,主動連接客戶機的大於1024的隨機端口。
被動模式:
FTP客戶端向服務器的FTP控制端口發送連接請求,服務器接收連接,建立一條命令鏈路,當需要傳送數據時候,服務器在命令鏈路上用PASV命令告訴客戶端;“我打開了某端口,你過來連接我。”於是客戶端向服務器的該端口發送連接請求,建立一條數據鏈路來傳送數據。在數據鏈路建立的過程中是服務器被動等待客戶端請求,所以稱爲被動模式。
FTP被動模式客戶機用大於1024的隨機端口,主動連接服務器大於1024的隨機端口。
主動模式下的FTP服務器,需要在服務器和客戶端之間的防火牆中設置一下策越:
允許FTP客戶機從大於1024的端口連接FTP服務器的21端口
允許FTP服務器從21端口迴應FTP客戶機中大於1024端口的網絡連接。
允許FTP服務器從20端口主動連接FTP客戶機中大於1024的端口
允許FTP客戶機從大於1024的端口迴應來自FTP服務器20端口的網絡連接
被動模式下的FTP服務器,需要在服務器和客戶端之間的防火牆中設置一下策越:
允許FTP客戶機從大於1024的端口連接FTP服務器的21端口
允許FTP服務器從21端口迴應FTP客戶機中大於1024端口的網絡連接。
允許FTP客戶機從大於1024端口主動連接FTP服務器中大於1024的端口
允許FTP服務器從大於1024的端口迴應來自FTP客戶機大於1024端口的網絡連接
3、服務端和客戶端程序
1)常見的FTP服務器程序:
Windows:IIS 、Serv-U
Linux: wu-ftpd 、Proftpd 、vsftpd(Very Secure FTP Daemon,常用)
2)常見的FTP客戶端程序:
CuteFTP、FlashFXP、LeapFTP、Filezilla
gftp、kuftp、FTP命令(Linux中可能需要自己安裝,yum -y install ftp)
二、FTP服務器的安裝與配置
1、安裝
1)服務器端: vsftpd
2)客戶端:
Linux系統:安裝ftp命令
Windows系統:使用第三方軟件連接
2、配置文件詳解
/etc/vsftpd/vsftpd.conf #主配置文件
anonymous_enable=YES #允許匿名用戶訪問
anon_umask=022 #匿名用戶所上傳文件的權限掩碼(無此項,默認是600)
anon_root=/var/ftp #匿名用戶的FTP根目錄
anon_upload_enable=YES #允許匿名用戶上傳(服務器權限和目錄權限均需要設置)
anon_mkdir_write_enable=YES #允許創建目錄
anon_other_write_enable=YES #開放其他寫入權
anon_max_rate=0 #限制最大傳輸速度(字節/秒)
local_enable=YES #是否啓用本地系統用戶
local_umask=022 #本地用戶所上傳文件的權限掩碼
local_root=/var/ftp #設置本地用戶的FTP根目錄
chroot_local_user=YES #是否將用戶禁錮在主目錄
local_max_rate=0 #限制最大傳輸速率
listen_address=192.168.4.1 #設置監聽的IP地址
listen_port=21 #設置監聽FTP服務的端口號
write_enable=YES #是否啓用寫入權限
download_enable=YES #是否允許下載文件
max_clients=0 #限制併發客戶端連接數
max_per_ip=0 #限制同一IP地址的併發連接數
3、虛擬用戶配置
1)建立虛擬FTP用戶的帳號數據庫文件
vi /etc/vsftpd/vusers.list(奇數行寫用戶名,偶數行寫密碼)
lc
123
sc
123
cd /etc/vsftpd
db_load -T -t hash -f vusers.list vusers.db
chmod 600 /etc/vsftpd/vusers.*
2)創建FTP根目錄及虛擬用戶映射的系統用戶
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot
3)建立支持虛擬用戶的PAM認證文件
vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
添加虛擬用戶支持
4)在vsftpd.conf文件中添加支持配置
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vusers_dir
5)爲個別虛擬用戶建立獨立的配置文件
mkdir /etc/vsftpd/vusers_dir
cd /etc/vsftpd/vusers.dir
vi lc
anon_upload_enable=YES
anon_mkdir_write_enable=YES
啓動服務並測試
6)重新加載vsftpd配置
service vsftpd reload
7)使用虛擬FTP帳號訪問測試
每個用戶都可以通過自己獨立配置文件中分配的權限來訪問FTP服務器。