簡單介紹:
文件傳輸協議
文件傳輸協議(FTP,File Transfer Protocol),即能夠讓用戶在互聯網中上傳、下載文件的文件協議,而FTP服務器就是支持FTP傳輸協議的主機,要想完成文件傳輸則需要FTP服務端和FTP客戶端的配合才行。
通常用戶使用FTP客戶端軟件向FTP服務器發起連接併發送FTP指令,服務器收到用戶指令後將執行結果返回客戶端。
FTP協議佔用兩個端口號:
21端口:命令控制,用於接收客戶端執行的FTP命令。
20端口:數據傳輸,用於上傳、下載文件數據。
FTP數據傳輸的類型:
主動模式:FTP服務端主動向FTP客戶端發起連接請求。
被動模式:FTP服務端等待FTP客戶端的連接請求。
FTP服務器
簡單地說,支持FTP協議的服務器就是FTP服務器。
與大多數Internet服務一樣,FTP也是一個客戶機/服務器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的FTP服務器程序。用戶通過客戶機程序向服務器程序發出命令,服務器程序執行用戶所發出的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求服務器向用戶傳送某一個文件的一份拷貝,服務器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。
Vsftpd即“Very Secure FTP Daemon”是一款運行在類Unix操作系統的FTP服務端程序,Vsftpd主打的是安全性、完全開源及免費、速率高、支持IPv6、虛擬用戶功能等等其他FTP服務端軟件不具備的功能。
FTP服務器的配置實現,通過修改vsftpd服務配置文件即可實現多種不同功能,下面通過幾個案例來實現不同的應用場景。
vsftpd程序配置文件參數的作用:
參數 | 作用 |
listen=[YES|NO] | 是否以獨立運行的方式監聽服務。 |
listen_address=IP地址 | 設置要監聽的IP地址。 |
listen_port=21 | 設置FTP服務的監聽端口。 |
download_enable=[YES|NO] | 是否允許下載文件。 |
userlist_enable=[YES|NO] | 是否啓用“禁止登陸用戶名單”。 |
max_clients=0 | 最大客戶端連接數,0爲不限制。 |
max_per_ip=0 | 同一IP地址最大連接數,0位不限制。 |
anonymous_enable=[YES|NO] | 是否允許匿名用戶訪問。 |
anon_upload_enable=[YES|NO] | 是否允許匿名用戶上傳文件。 |
anon_umask=022 | 匿名用戶上傳文件的umask值。 |
anon_root=/var/ftp | 匿名用戶的FTP根目錄。 |
anon_mkdir_write_enable=[YES|NO] | 是否允許匿名用戶創建目錄。 |
anon_other_write_enable=[YES|NO] | 是否開放匿名用戶其他寫入權限。 |
anon_max_rate=0 | 匿名用戶最大傳輸速率(字節),0爲不限制。 |
local_enable=[YES|NO] | 是否允許本地用戶登陸FTP。 |
local_umask=022 | 本地用戶上傳文件的umask值。 |
local_root=/var/ftp | 本地用戶的FTP根目錄。 |
chroot_local_user=[YES|NO] | 是否將用戶權限禁錮在FTP目錄,更加的安全。 |
local_max_rate=0 | 本地用戶最大傳輸速率(字節),0爲不限制。 |
案例1:
案例2:
允許匿名用戶上傳、下載、創建目錄、刪除文件和目錄。
修改服務器主配置文件:
客戶端測試:
案例3:
允許本地用戶訪問,且將部分用戶限制在其家目錄中。
修改服務器主配置文件/etc/vsftpd/vsftpd.conf
客戶端測試:
案例4:
修改服務器主配置文件/etc/vsftpd/vsftpd.conf
當userlist_enable=YES時,userlist_deny=YES時:user_list是一個黑名單,即:所有出現在名單中的用戶都會被拒絕登入;
當userlist_enable=YES時,userlist_deny=NO時:user_list是一個白名單,即:只有出現在名單中的用戶纔會被准許登入
客戶端測試: