1. 程式人生 > >FTP--文件共享服務

FTP--文件共享服務

sftp x86 日誌 它的 顯示 日誌分析 舉例 sage conn

1.實現共享服務常用的有三種
1.)ftp:屬於應用層服務,可以跨平臺使用(linux< -- >unix< -- >windows)
2.)Nfs:屬於內核模式,不可以跨平臺(linux< -- >linux)
3.)samba:可以跨平臺使用(linux< -- >unix< -- >windows)
2.實現存儲設備域服務器連接的方式有三種
1.)DAS:連接的磁盤。
2.)NAS:通過nfs/cifs協議實現網絡文件共享(文件存儲方式)電子郵件、網頁服務器多媒體流服務、檔案分享等就適用以NAS存儲架構。
3.)SAS:通過網線或光纖實現ISCSI和FCSAN將物理存儲設備連接起來使用(塊存儲方式比較底層,需要格式化並掛載當本地磁盤使用)數據庫有關的應用適用於SAN存儲架構。
3.FTP
FTP是File Transfer Portocol文件傳輸協議的縮寫,基於網絡來傳輸文件的應用層協議。
FTP能夠通過網絡來傳輸文件,主要是因為工作在應用層所以不會受到平臺的限制。
FTP(File Transfer Protocol,文件傳輸協議) 是 TCP/IP 協議組中的協議之一。FTP協議包括兩個組成部分,其一為FTP服務器,其二為FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP服務器上的資源。在開發網站的時候,通常利用FTP協議把網頁或程序傳到Web服務器上。此外,由於FTP傳輸效率非常高,在網絡上傳輸大的文件時,一般也采用該協議。
默認情況下FTP協議使用TCP端口中的 20和21這兩個端口,其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作為傳輸數據的端口與FTP使用的傳輸模式有關,如果采用主動模式,那麽數據傳輸端口就是20;如果采用被動模式,則具體最終使用哪個端口要服務器端和客戶端協商決定。
4.FTP傳輸模式
技術分享圖片
①FTP的數據傳輸分為命令數據與文件數據,命令傳輸就是客戶端要執行的命令,服務端收到後返回給客戶端執行結果,如ls命令的執行結果一樣,文件傳輸就是客戶端要傳輸的數據,服務端與客戶端數據連接來傳輸。
②FTP的服務端與客戶端建立連接大體的三個步驟:建立連接、傳輸數據、斷開連接。(基於tcp連接方式)
③FTP是基於tcp協議來傳輸數據的,使用21號端口來建立認證通道,20號端口來建立數據通道。
④FTP是明文傳輸的。
⑤FTP的用戶可分為實體用戶(real user),匿名用戶(anonymous user),訪問用戶(gurest user)。
5.FTP的工作模式
由於現在的網絡架構中,都會有防火墻來阻止端口與高位端口被主動連接,特別20端口是被禁止主動連接的,因為20端口是FTP的數據端口,所以為了解決客戶端或者服務器的防火墻問題,FTP就有了主動和被動兩種模式,通過墻內的一端來主動連接外端的一方,這樣子就不會被防火墻阻擋了。
①主動模式
一般用於服務端存在防火墻的情況,客戶端無法主動連接至服務器的20數據端口,需要服務端主動連接客戶端的高位數據端口。
兩端在建立tcp通道後,客戶端會發送port請求與服務端的21號端口認證連接並發送開放用來建立數據連接的高位端口號。
服務端在收到後,會通過20號端口發送ACK響應請求。
服務端會通過20端口與客戶端發送的高位端口建立數據連接通道。
②被動模式
一般用於客戶端存在防火墻的情況,服務端在收到連接請求後因為客戶端防火墻而無法達到客戶端的高位端口,需要客戶端主動連接至服務端的數據傳輸端口。
兩端在建立TCP通信通道連接後,客戶端會發送PASV請求給服務端。
服務端在收到PASV請求後,會打開一個高位端口作為數據傳輸端口來響應給客戶端,等待客戶端連接。
客戶端在收到響應後,就會去連接服務端響應的高位端口建立數據連接通道。
③圖解
技術分享圖片
6.FTP用戶的類型
①匿名用戶
anonymous或ftp
②本地用戶
賬戶名稱、密碼等信息保存在passwd、shadow文件中
③虛擬用戶
使用獨立的賬號/密碼數據文件
舉例:user_list wangwu 123456 /var/pub
7.VSFTPD
vsftpd是基於ftp協議來對網絡數據交換的一種實現,是一個開源的解決方案。
1.)VSftpd軟件包
①官方站點:http://vsftpd.beasts.org/(貌似被封了)
②主程序:/usr/sbin/vsftpd
③服務名:vsftpd
④用戶控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
⑤主配置文件
/etc/vsftpd/vsftpd.conf
2.)vsftpd基礎服務搭建(這裏以NFS服務器做測試)

[root@NFS ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@NFS ~]# setenforce 0     #關閉 selinux
setenforce: SELinux is disabled
[root@NFS ~]# /etc/init.d/iptables status    #關閉防火墻
iptables: Firewall is not running.
[root@NFS ~]# yum install vsftpd -y
[root@NFS ~]# rpm -qa vsftpd
vsftpd-2.2.2-24.el6.x86_64
[root@NFS ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd         #pam認證文件
/etc/rc.d/init.d/vsftpd   #服務啟動進程
/etc/vsftpd
/etc/vsftpd/ftpusers      #限制登陸文件
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf     #主配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd           #程序文件
......
/var/ftp            #ftp家目錄
/var/ftp/pub
[root@NFS ~]# 

配置文件參數說明

anonymous_enable=YES   #  是否允許匿名用戶連接服務器端。
local_enable=YES    #  是否允許系統用戶連接服務器端。
write_enable=YES   #  是否允許本地系統用戶上傳文件。
#anon_upload_enable=YES  #  是否允許匿名用戶上傳文件(默認不允許)。
#anon_mkdir_write_enable=YES   #  是否允許匿名用戶創建目錄(默認不允許)。
#anon_other_write_enable=YES   #  匿名用戶其他的寫權限(刪除文件權限)。
dirmessage_enable=YES  #  進入某個目錄是否顯示歡迎信息。
xferlog_enable=YES  #  是否打開傳輸日誌。
#xferlog_file=/var/log/xferlog   #  傳輸日誌存放路徑(默認沒有啟用)。
xferlog_std_format=YES  #  日誌格式是否為標準格式的參數。(沒必要、用於日誌分析)
#chown_uploads=YES  #  用戶上傳文件後是否將其屬主改為其他用戶。
#chown_username=whoever  #  用戶上傳完成後將屬主改為的用戶名。
#idle_session_timeout=600   #  超時參數,默認會話超過 600 秒斷開用戶連接(控制連接相關)。
#data_connection_timeout=120     #  數據連接相關超時參數。
#ascii_upload_enable=YES  #  是否使用文本格式上傳文件。
#ascii_download_enable=YES  #  是否使用文本格式下載文件。    
提示:除非只傳文本格式數據,否則上面兩個 ascli 參數需要註釋掉,避免二進制數據被轉換為文本格式。                         
#chroot_local_user=YES   #  是否讓所有用戶禁錮在家目錄(如果想選擇用戶用下面兩個參數)。                         
#chroot_list_enable=YES   #  是否定義用一個文件將特定用戶所在它的家目錄下。                                                     
#chroot_list_file=/etc/vsftpd/chroot_list   #  指定創建用戶列表文件的路徑(所有該文件目錄都將被禁錮在用戶的家目錄中),該文件默認不存在,需要手動創建。
listen=YES   #  表示 vsftpd 是否工作為一個獨立的守護進程。
pam_service_name=vsftpd  #  定義 pam 配置文件的名字。
userlist_enable=YES   #  是否開啟禁止訪問 FTP 的用戶列表功能。

FTP--文件共享服務