天天看點

Linux網絡服務與shell腳本——Linux網絡設定與基礎服務3(FTP)                             第一章 Linux網絡設定與基礎服務

                             第一章 Linux網絡設定與基礎服務

五、FTP服務

1、FTP服務基礎

File Transfer Protocol,檔案傳輸協定:需要由服務端軟體、用戶端軟體兩個部分共同實作檔案傳輸功能。FTP可跨平台跨網段使用,samba隻能支援區域網路。

(1)FTP連接配接及傳輸模式

①FTP服務使用TCP的20/21端口與用戶端進行通信。20端口用于建立資料連接配接,并傳輸檔案資料;21端口用于建立控制連接配接,并傳輸FTP控制指令

②主動模式:伺服器主動發起資料連接配接。首先由用戶端想服務端的21端口建立FTP控制連接配接,當需要傳輸資料時,用戶端已PORT指令告知伺服器“我打開了某端口,你過來接我”,于是伺服器從20端口向用戶端的該端口發送請求并建立資料連接配接

③被動模式:伺服器被動等待資料連接配接。如果客戶機所在網絡防火牆進制主動模式,通常會使用被動模式。首先由用戶端想服務端的21端口建立FTP控制連結,當需要資料傳輸時,伺服器以PASV指令告知用戶端“我打開了某端口,你過來接我”,于是用戶端想伺服器的該端口(非20)發送請求并建立資料連接配接

④文本模式:又稱ASCII(美國資訊交換标準碼)模式,在傳輸檔案時使用ASCII标準字元序列,一般隻用于純文字檔案的傳輸

⑤二進制模式:又稱為Binary模式。它不會轉換檔案中的字元序列,更适合傳輸程式、圖檔等非純文字字元的檔案。(使用二進制傳輸更有效率,大多數FTP用戶端工具可以根據檔案類型自動選擇檔案傳輸模式,而無需使用者指定)

(1)FTP使用者類型

①匿名使用者:anonymous或ftp

②本地使用者:賬号密碼資訊等儲存在passwd、shadow中

③虛拟使用者:使用獨立的賬号密碼檔案

(2)常見的FTP伺服器程式

①IIS、Serv-U

②wu-ftpd、Proftpd

③vsftpd(Very Secure FTP Daemon)

(3)常見的FTP用戶端程式

①ftp指令

②cuteFTP、flashfxp、leapftp、filezilla

③gftp、kuftp

2、vsftpd

(1)配置檔案

①常用全局配置項

1)listen=YES:是否以獨立運作的方式監聽服務

2)listen_address=192.168.4.1:設定監聽的IP位址

3)listen_port=21:設定監聽FTP服務的端口

4)write_enable=YES:寫入權限

5)dowload_enable=YES:是否允許下載下傳

6)userlist_enable=YES:是否啟用user_list清單檔案

7)userlist_deny=YES:是否禁用user_list中的使用者

8)max_clients=0:限制并發用戶端連接配接數

9)max_per_ip=0:限制同一IP位址的并發連接配接數

②常用的匿名配置項

1)anonymous_enable=YES:啟用匿名通路

2)anon_umask=022:匿名使用者所上傳檔案的權限掩碼

3)anon_root=/var/ftp:匿名使用者的FTP根目錄

4)anon_uoload_enable:允許上傳

5)anon_mkdir_write_enable:允許建立目錄

6)anon_other_write_enable:允許删除

7)anon_max_rante=0:限制最大傳輸速率(位元組/秒)

③常用的本地使用者配置

1)local_enable=YES:開啟本地使用者通路

2)local_umask:用于設定非匿名使用者上傳檔案的umask值,預設值為022。

3)local_root:用于指定所有非匿名使用者的根目錄,預設情況,FTP會将各使用者引導到各自的家目錄

4)chroot_local_user=YES:是否将使用者禁锢在主目錄

5)local_max_rate=0:限制最大傳輸速率

④配置項對照表

1)accept_timeout=60:用于設定被動連接配接的逾時時間(機關:秒)。預設值為60。

2)allow_anon_ssl=YES|NO:是否允許匿名使用者通過SSL連接配接(如果設定為YES,則ssl_enable也必須設定為YES)。預設值為NO。

3)anon_max_rate=0:使用者限制匿名使用者的傳輸速度(機關:Byte/s)。預設值為0(表示無限制)。

4)anon_mkdir_write_enable=YES|NO:是否允許匿名使用者建立目錄(如果設定為YES,則write_enable也必須設定為YES)。預設值為NO。

5)anon_other_write_enable=YES|NO:是否允許匿名使用者删除和重命名檔案(如果設定為YES,則write_enable也必須設定為YES)。預設值為NO。

6)anon_umask=077:用于設定匿名使用者上傳檔案的umask值。預設值為077。

7)anon_upload_enable=YES|NO:是否允許匿名使用者上傳檔案(如果設定為YES,則write_enable也必須設定為YES)。預設值為NO。

8)anon_world_readable_only=YES|NO:預設值為YES。

9)anonymous=YES|NO:是否允許匿名使用者登入。預設值為YES。

10)ascii_download_enable=YES|NO:是否允許下載下傳檔案時使用ASCII傳輸模式。預設值為NO。

11)ascii_upload_enable=YES|NO:是否允許上傳檔案時使用ASCII傳輸模式。預設值為NO。

12)async_abor_enable=YES|NO:是否允許用戶端使用sync等指令。預設值為NO。

13)chown_uploads=YES|NO:是否改變匿名使用者上傳檔案後檔案的屬主。預設值為NO。

14)chown_username=root:用于設定匿名使用者上傳檔案後檔案的屬主(隻有chown_uploads設定為YES時該參數才生效)。預設值為root。

15)chroot_list_enable=YES|NO:如果設定為YES,則chroot_local_user也必須為YES,表示隻有在清單中的使用者能離開家目錄,如果設定為NO,則表示不啟用清單。預設值為NO。

16)chroot_list_file=/etc/vsftpd/chroot_list:用于設定清單的路徑。預設值為/etc/vsftpd/chroot_list。

17)chroot_local_user=YES|NO:是否将本地使用者控制在家目錄中。預設值為NO。

18)connect_from_port_20=YES|NO:是否使用20端口來傳輸資料。預設值為NO。

19)connect_timeout=60:用于設定主動連接配接的逾時時間(機關:秒)。預設值為60。

20)data_connection_timeout=300:用于設定資料傳輸的逾時時間(機關:秒)。預設值為300。

21)deny_file:用于限制上傳檔案的類型,例如deny_file={*.mp3,*.exe}。無預設值。

22)dirlist_enable=YES|NO:是否允許使用者使用dir之類的列目錄指令。預設值為YES。

23)dirmessage_enable=YES|NO:是否在使用者切換目錄時顯示歡迎資訊,如果設定為YES,則需要在每個需要顯示歡迎資訊的目錄下建立名為.message的檔案,并在裡面輸入歡迎資訊才會顯示。預設值為NO。

24)download_enable=YES|NO:是否允許使用者下載下傳檔案。預設值為YES。

25)ftp_data_port=20:用于設定資料傳輸端口。預設值為20。

26)ftpd_banner:指定登入到FTP時的歡迎資訊。無預設值。

27)guest_enable=YES:啟用虛拟使用者通路

28)guest_username=ftpusers:設定映射的系統賬号

29)idle_session_timeout=300:用于設定回話逾時時間(機關:秒)。預設值為300。

30)listen_address:當vsftpd伺服器連接配接多個網絡時,如果隻希望監聽某個網絡的請求時,就需要設定該參數了。無預設值。

31)listen_ipv6=YES|NO:是否啟用standalone模式并通過ipv6監聽。預設值為NO。

32)listen_port=21:用于設定監聽的端口。預設值為21。

33)listen=YES|NO:是否啟用standalone模式并通過ipv4監聽。預設值為NO。

34)local_enable=YES|NO:是否允許非匿名使用者登入。預設值為NO。

35)local_max_rate=0:用于限制非匿名使用者的傳輸速度(機關:Byte/s)。預設值為0(表示無限制)。

36)local_root:用于指定所有非匿名使用者的根目錄,預設情況,FTP會将各使用者引導到各自的家目錄,如果你希望所有使用者登入到同一個根目錄,那麼你就需要用到該參數了。無預設值。

37)local_umask=022:用于設定非匿名使用者上傳檔案的umask值。預設值為022。

38)ls_recurse_enable=YES|NO:是否允許使用者在登入到FTP伺服器後使用ls -R等比較占用系統資源的指令。預設值為NO。

39)max_clients=2000:用于設定最大連接配接數。預設值為2000。

40)max_per_ip=50:用于設定同一台主機的最大連接配接數。預設值為50。

41)message_file=.messag:用于設定儲存歡迎資訊的檔案名。預設值為.message。

42)nopriv_user=nobody:用于設定vsftpd服務的運作使用者。預設值為nobody。

43)pam_service_name=vsftpd.vu:設定PAM認證檔案(預設為vsftpd)

44)pasv_max_port:用于設定被動連接配接時,用戶端的資料連接配接端口的最大值。預設值為0(表示采用随機端口)。

45)pasv_min_port:用于設定被動連接配接時,用戶端的資料連接配接端口的最小值。預設值為0(表示采用随機端口)。

46)tcp_wrappers=YES|NO:是否啟用tcp_wrappers通路控制清單。預設值為NO。

47)use_localtime=YES|NO:是否使用本地時間。預設值為NO。

48)userlist_deny=YES|NO:如果設定為YES,則表示拒絕清單内的使用者登入,否則表示隻允許清單内的使用者登入。預設值為YES。

49)userlist_enable=YES|NO:是否啟用使用者清單。預設值為NO。

50)userlist_file=/etc/vsftpd/user_list:用于設定使用者清單的路徑。預設值為/etc/vsftpd/user_list。

51)write_enable=YES|NO:是否允許使用者具有寫權限。預設值為NO。

52)xferlog_enable=YES|NO:是否啟用日志記錄使用者的上傳/下載下傳。預設值為NO。

53)xferlog_file=/var/log/xferlog:用于設定日志檔案的路徑。預設值為/var/log/xferlog。

54)xferlog_std_format=YES|NO:是否采用标準日志檔案來記錄日志。預設值為NO。

(2)匿名通路的配置

①安裝後直接啟動服務,程式預設就為匿名通路

(3)使用者名驗證通路的配置

①修改配置檔案/etc/vsftpd/vsftpd.conf

1)anonymous_enable=NO

2)local_enable=YES

(4)基于虛拟使用者的通路配置

①建立虛拟FTP使用者賬号資料庫檔案

1)建立檔案(奇數行為賬号、偶數行為密碼)

a.vim vusers

2)轉化為資料庫檔案

a.db_load -T -t hash -f vusers vusers.db

b.完成後删除vusers檔案

3)修改檔案權限為600

a.chmod 600 vusers.db

②建立FTP根目錄及虛拟使用者映射的系統賬号

1)useradd -s /sbin/nologin -d /home/ftproot ftpusers

2)修改/home/ftproot目錄權限

a.chmod 655 /home/ftproot

③建立支援虛拟使用者的PAM認證檔案

1)/tec/pam.d/vsftpd.vu

a.#%PAM-1.0

b.auth       required    pam_userdb.so db=/etc/vsftpd/vusers

c.account    required    pam_userdb.so db=/etc/vsftpd/vusers

2)此處不需要寫vusers.db的字尾

④修改配置檔案添加虛拟賬号資料庫檔案

1)anonymous_enable=NO:關閉匿名通路

2)local_enable=YES:允許本地使用者通路

3)guest_enable=YES:啟用虛拟使用者通路

4)guest_username=ftpusers:設定映射的系統賬号

5)pam_service_name=vsftpd.vu:修改PAM認證檔案

⑤虛拟使用者權限設定

1)建立vusers_dir目錄:mkdir /etc/vsftpd/vusers_dir

2)在vusers_dir中以虛拟使用者名建立空檔案:touch boss

3)vim boss并添權重限如anon_upload_enable=YES等

4)在主配置檔案添加:user_config_dir=/etc/vsftpd/vusers_dir

⑥重新開機

⑦測試

繼續閱讀