1. 程式人生 > >Linux雲伺服器初學之八——FTP服務

Linux雲伺服器初學之八——FTP服務

FTP服務

FTP服務是Internet上最早應用主機之間進行資料傳輸的基本服務之一。FTP服務的一個非常重要的特點就是可以獨立於平臺,也就是說在UNIX、MAC、Windows等作業系統中都可以實現FTP的客戶端和伺服器。儘管目前已經普遍採用HTTP方式傳送檔案,但FTP仍然是跨平臺直接傳送檔案的主要方式。FTP在檔案傳輸中還支援斷點續傳功能,可以大幅度地減小CPU和網路頻寬的開銷。

FTP的檔案傳輸模式

(1) 主動模式

客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。
當需要傳送資料時,客戶端在命令鏈路上用 PORT命令告訴伺服器:“我打開了**

埠(大於1024的隨機埠),你把資料通過我開啟的這個埠傳送給我”。
於是伺服器從20埠向客戶端的**埠傳送連線請求,建立一條資料鏈路來傳送資料。

(2)PASV(被動)方式的連線過程是:(預設是被動模式)

客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。
當需要傳送資料時,伺服器在命令鏈路上用 PASV命令告訴客戶端:“我打開了**埠(大於1024的隨機埠),你過來提取資料”。
於是客戶端向伺服器的**埠傳送連線請求,建立一條資料鏈路來傳送資料。

抉擇?:

防火牆會拒絕進來的包,所以兩種模式都有可能被拒絕掉。
折中的方法就是使用被動模式,並指定一個連線過來的埠範圍,可以針對這個範圍的埠進行一個防火牆的設定。

FTP服務的安裝及配置

(1)安裝ftp服務

yum -y install vsftpd –服務端
yum -y install ftp lftp –客戶端

FTP配置檔案:
主配置檔案:/etc/vsftpd/vsftpd.conf
使用者訪問控制配置檔案:/etc/vsftpd/{ftpusers, user_list}

FTP的家目錄:/var/ftp

(2) 啟動服務
1.啟動服務

service vsftpd restart
關閉 vsftpd: [失敗]
為 vsftpd 啟動 vsftpd: [確定]

2.設為開機自啟動

chkconfig vsftpd on
netstat -ntl |grep :21 –現在是隻能看到監聽21埠
tcp6 0 0 :::21 :::* LISTEN

3.檢視是否啟動成功

lsof -i:21
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vsftpd 3321 root 3u IPv4 21400 0t0 TCP *:ftp (LISTEN)

(3) 修改配置檔案

vim /etc/vsftpd/vsftpd.conf

可修改如下引數

12 anonymous_enable=YES –是否允許匿名使用者登陸,yes是允許
16 local_enable=YES –允許本地使用者登陸
19 write_enable=YES –允許本地使用者寫許可權
23 local_umask=022 –本地使用者上傳或建立檔案時的許可權
37 dirmessage_enable=YES –檔案的描述
40 xferlog_enable=YES –開啟日誌(/var/log/xferlog),只上傳和下載的記錄
43 connect_from_port_20=YES –是否允許開啟主動模式,通過20埠傳輸資料
57 xferlog_std_format=YES –為yes的話代表建立一個新的日誌檔案,為no的話,日誌放到/var/log/vsftpd.log檔案裡
114 listen=YES –獨立模式,為yes代表是用vsftpd本身指令碼啟動,為no代表要以xinetd守護程序啟動
125 pam_service_name=vsftpd –支援模組的植入
126 userlist_enable=YES –開啟使用者列表
127 tcp_wrappers=YES –通過TCP把資料打包再傳輸
27 #anon_upload_enable=YES –預設是註釋的,意為允許匿名使用者上傳檔案
31 #anon_mkdir_write_enable=YES –預設是註釋的,意為允許匿名使用者建立檔案

(4)例項

例項1 : 禁止匿名使用者登入

12 anonymous_enable=NO –改為NO

結果

ftp 192.168.5.10
Connected to 192.168.5.10 (192.168.5.10).
220 (vsFTPd 3.0.2)
Name (192.168.5.10:root): ftp
331 Please specify the password.
Password:
530 Login incorrect.
Login failed. –登陸失敗

例項2:匿名使用者的下載和上傳

anonymous_enable=YES
anon_upload_enable=YES –允許匿名使用者上傳檔案,這行預設是註釋掉的,要把#去掉
anon_mkdir_write_enable=YES –允許匿名使用者建立目錄,這行預設是註釋掉的,要把#去掉

總結:匿名使用者只能對登入目錄內的子目錄裡面進行上傳,並且對這個子目錄要有w許可權,還要有anon_upload_enable=YES和anon_mkdir_write_enable=YES的支援就可以上傳了

例項3:關於普通使用者(系統的普通使用者)的登入

local_enable=NO –建議使用服務的引數去禁止,但是這裡會把所有的普通使用者給禁止掉,要實現特定的使用者的控制

例項4: 白名單和黑名單

1.修改配置檔案

userlist_enable=yes –開啟使用者列表功能,預設就是開啟的
userlist_deny=YES\NO –加上這句,啟用黑名單\白名單

2.修改使用者名稱單

vim /etc/vsftpd/user_list
此處的使用者當上方為YES是就為禁止登入,NO則為只允許名單裡的允許登入。