1、FTP伺服器的一些基本概念 (1)FTP連接方式 控制連接:標準埠為21,用於發送FTP命令信息。 數據連接:標準埠為20,用於上傳、下載數據。 (2)數據連接的建立類型 主動模式:服務端從20埠主動向客戶端發起連接。 被動模式:服務端在指定範圍內的某個埠被動等待客戶端發起連接。 一般都 ...
1、FTP伺服器的一些基本概念 (1)FTP連接方式 控制連接:標準埠為21,用於發送FTP命令信息。 數據連接:標準埠為20,用於上傳、下載數據。 (2)數據連接的建立類型 主動模式:服務端從20埠主動向客戶端發起連接。 被動模式:服務端在指定範圍內的某個埠被動等待客戶端發起連接。 一般都採用被動模式。主動模式存在安全隱患,客戶機很容易發起DdoS攻擊。 (3)FTP傳輸模式 文本模式:ASCII模式,以文本序列傳輸數據。 二進位模式:Binary模式,以二進位序列(比特流)傳輸數據。 ASCII模式一般只用於純文本文件傳輸,而Binary模式更適合傳輸程式、圖片等文件。尤其是對於可執行文件,如果把可執行文件以文本模式傳輸,則下載下來的文件將無法正常使用。 在rhel6中預設採用二進位模式,在rhel6以前的版本中預設採用文本模式,為了提高可靠性,rhel6不再支持文本模式。 (4)FTP用戶的類型 匿名用戶:anonymous或ftp,這兩個其實是同一個用戶。 本地用戶:帳號名稱、密碼等信息保存在passwd、shadow文件中。但是系統用戶在訪問時預設只能訪問自己的主目錄,而不是vsftpd的主目錄/var/ftp 虛擬用戶:使用獨立的帳號/密碼數據文件。 2、vdftpd服務 後臺進程:vsftpd 啟動腳本:/etc/init.d/vsftpd 類型:System V 服務 使用埠:20(ftp-data),21(ftp) 所需RPM包:vsftpd 配置文件:/etc/vsftpd/vsftpd.conf 查看配置文件幫助:man vsftpd.conf 預設主目錄是:/var/ftp 3、配置匿名用戶下載和上傳 [root@test ~]# cat /etc/redhat-release CentOS release 6.5 (Final) 3.1安裝FTP軟體包,客戶端和伺服器端: tftp-server-0.49-7.el6.i686 ftp-0.17-51.1.el6.i686 tftp-0.49-7.el6.i686 vsftpd-2.2.2-6.el6_0.1.i686 lftp-4.0.9-1.el6.i686 gvfs-obexftp-1.4.3-12.el6.i686 啟動服務,並設為開機自動 service vsftpd start chkconfig vsftpd on 編輯主配置文件/etc/vsftpd/vsftpd.conf anonymous_enable=YES 表示允許匿名用戶訪問。 local_enable=YES 表示允許使用系統用戶訪問, write_enable=YES 表示允許允許匿名用戶或系統用戶具有寫入許可權 將“/var/ftp/pub”目錄的屬主改為ftp,即可賦予匿名用戶寫入許可權 [root@test ~]# chown ftp /var/ftp/pub/ 同時在配置文件/etc/vsftpd/vsftpd.conf中增加以下幾行: anon_upload_enable=YES #表示允許匿名用戶上傳 anon_mkdir_write_enable=YES #表示允許匿名用戶創建目錄 anon_umask=022 #表示設置匿名用戶的umask值 anon_max_rate=500000 #表示對匿名用戶的傳輸速率進行限制,單位為位元組。 重啟服務:service vsftpd restart(reload) 3.2、在客戶端使用匿名用戶訪問測試 此時匿名用戶可以新建文件夾,可以上傳文件,如下圖: 4、配置本地用戶上傳和下載 (1)vsftpd可以直接使用Linux系統的本地用戶作為FTP用戶。 使用本地用戶登錄FTP伺服器後,預設將位於用戶自己的主目錄中,且具有讀寫許可權。 如利用test用戶訪問ftp,那麼預設將進入到的目錄是/home/test。 創建系統用戶,並設置密碼,併在主目錄中放置一個測試文件: useradd ftptest passwd ftptest echo ‘ftp test’ > /home/ftptest/ftptest.txt 創建系統用戶test,並設置密碼: useradd test passwd test (2)實現的場景一:允許用戶test登錄,且登錄成功後位於自己的家目錄中。不允許ftptest用戶登錄 配置參數: anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user =YES chroot_list_enable=NO chroot_list_file=/etc/vsftpd/chroot_list local_umask=022 userlist_enable=YES userlist_deny=NO 將test用戶加入到 /etc/vsftpd/user_list文件。 [root@test vsftpd]# vi /etc/vsftpd/user_list test [root@test ~]# cd /home/test/ [root@test test]# ls test.txt 新建文件夾 測試: (3)實現場景二:允許ftptest用戶登錄,登錄成功後位於/data目錄,禁止test用戶登錄。 anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user =YES chroot_list_enable=NO chroot_list_file=/etc/vsftpd/chroot_list local_umask=022 userlist_enable=YES userlist_deny=NO local_root=/data 將ftptest用戶加入到 /etc/vsftpd/user_list文件。從此文件中刪除test用戶。 [root@test vsftpd]# vi /etc/vsftpd/user_list ftptest