共享資源庫系統

幫小熊梳毛發表於2021-03-15

FTP服務

3.1 什麼是FTP

FTP(File Transfer Protocol)是一個非常古老並且應用十分廣泛的檔案傳輸協議,FTP協議是現今使用最為廣泛的網路檔案共享協議之一,我們現在也一直有在用著FTP協議來進行各種檔案的傳輸,FTP為我們提供了一種可靠的方式在網路上進行檔案的共享。

 

3.2 FTP原理

FTP是C/S架構的服務,擁有一個伺服器端和一個客戶端,FTP底層通過TCP協議來作為傳輸協議,所以FTP協議是一種可靠的檔案傳輸方式,FTP提供了兩個埠號,20和21號埠,20號是資料介面,提供資料之間的傳輸,21號是命令介面,提供命令之間的傳輸。

FTP服務端與客戶端連線一般有兩種模式:主動模式(Active Mode)和被動模式(Passive Mode)

在主動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連線,傳送FTP使用者名稱和密碼,然後開放N+1號埠進行監聽,並向伺服器發出PORT N+1命令,告訴服務端客戶端採用主動模式並開放了埠。FTP伺服器接收到PORT命令後,會用其本地的FTP資料埠(通常是20)來連線客戶端指定的埠N+1,進行資料傳輸。如圖:

 

在被動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連線,傳送使用者名稱和密碼進行登陸,同時會開啟N+1埠。然後向伺服器傳送PASV命令,通知伺服器自己處於被動模式。伺服器收到命令後,會開放一個大於1024的埠P(埠P的範圍是可以設定的,後面會說到這個是很重要的)進行監聽,然後用PORT P命令通知客戶端,自己的資料埠是P。客戶端收到命令後,會通過N+1號埠連線伺服器的埠P,然後在兩個埠之間進行資料傳輸。如圖:

 

3 FTP狀態碼

FTP狀態碼

1xx – 肯定的初步答覆

這些狀態程式碼指示一項操作已經成功開始,但客戶端希望在繼續操作新命令前得到另一個答覆。

l  110 重新啟動標記答覆。

l  120 服務已就緒,在 nnn 分鐘後開始。

l  125 資料連線已開啟,正在開始傳輸。

l  150 檔案狀態正常,準備開啟資料連線。

 

2xx – 肯定的完成答覆

一項操作已經成功完成。客戶端可以執行新命令。

l  200 命令確定。

l  202 未執行命令,站點上的命令過多。

l  211 系統狀態,或系統幫助答覆。

l  212 目錄狀態。

l  213 檔案狀態。

l  214 幫助訊息。

l  215 NAME 系統型別,其中,NAME 是 Assigned Numbers 文件中所列的正式系統名稱。

l  220 服務就緒,可以執行新使用者的請求。

l  221 服務關閉控制連線。如果適當,請登出。

l  225 資料連線開啟,沒有進行中的傳輸。

l  226 關閉資料連線。請求的檔案操作已成功(例如,傳輸檔案或放棄檔案)。

l  227 進入被動模式 (h1,h2,h3,h4,p1,p2)。

l  230 使用者已登入,繼續進行。

l  250 請求的檔案操作正確,已完成。

l  257 已建立“PATHNAME”。

 

3xx – 肯定的中間答覆

該命令已成功,但伺服器需要更多來自客戶端的資訊以完成對請求的處理。

l  331 使用者名稱正確,需要密碼。

l  332 需要登入帳戶。

l  350 請求的檔案操作正在等待進一步的資訊。

 

4xx – 瞬態否定的完成答覆

該命令不成功,但錯誤是暫時的。如果客戶端重試命令,可能會執行成功。

l  421 服務不可用,正在關閉控制連線。如果服務確定它必須關閉,將向任何命令傳送這一應答。

l  425 無法開啟資料連線。

l  426 Connection closed; transfer aborted.

l  450 未執行請求的檔案操作。檔案不可用(例如,檔案繁忙)。

l  451 請求的操作異常終止:正在處理本地錯誤。

l  452 未執行請求的操作。系統儲存空間不夠。

 

5xx – 永久性否定的完成答覆

該命令不成功,錯誤是永久性的。如果客戶端重試命令,將再次出現同樣的錯誤。

l  500 語法錯誤,命令無法識別。這可能包括諸如命令列太長之類的錯誤。

l  501 在引數中有語法錯誤。

l  502 未執行命令。

l  503 錯誤的命令序列。

l  504 未執行該引數的命令。

l  530 未登入。

l  532 儲存檔案需要帳戶。

l  550 未執行請求的操作。檔案不可用(例如,未找到檔案,沒有訪問許可權)。

l  551 請求的操作異常終止:未知的頁面型別。

l  552 請求的檔案操作異常終止:超出儲存分配(對於當前目錄或資料集)。

l  553 未執行請求的操作。不允許的檔名。

 

常見的 FTP 狀態程式碼及其原因

l  150 – FTP 使用兩個埠:21 用於傳送命令,20 用於傳送資料。狀態程式碼 150 表示伺服器準備在埠 20 上開啟新連線,傳送一些資料。

l  226 – 命令在埠 20 上開啟資料連線以執行操作,如傳輸檔案。該操作成功完成,資料連線已關閉。

l  230 – 客戶端傳送正確的密碼後,顯示該狀態程式碼。它表示使用者已成功登入。

l  331 – 客戶端傳送使用者名稱後,顯示該狀態程式碼。無論所提供的使用者名稱是否為系統中的有效帳戶,都將顯示該狀態程式碼。

l  426 – 命令開啟資料連線以執行操作,但該操作已被取消,資料連線已關閉。

l  530 – 該狀態程式碼表示使用者無法登入,因為使用者名稱和密碼組合無效。如果使用某個使用者帳戶登入,可能鍵入錯誤的使用者名稱或密碼,也可能選擇只允許匿名訪問。如果使用匿名帳戶登入,IIS 的配置可能拒絕匿名訪問。

l  550 – 命令未被執行,因為指定的檔案不可用。例如,要 GET 的檔案並不存在,或試圖將檔案 PUT 到您沒有寫入許可權的目錄。

 

 

4 FTP客戶端

ftp命令程式:是最簡單的FTP客戶端工具,Windows和Linux都擁有ftp命令程式,可以連線到FTP伺服器進行互動式的上傳、下載通訊。

圖形化FTP客戶端工具:Windows中較常用的包括CuteFTP、FlashFXP、LeapFTP、Filezilla等,在圖形化的客戶端程式中,使用者通過滑鼠和選單即可訪問、管理FTP資源,而不需要掌握FTP互動命令,更易於使用。

下載工具:FlashGet、Wget等,包括大多數網頁瀏覽器程式,都支援通過FTP協議下載檔案,但因不具備FTP上傳管理功能,通常不稱為FTP客戶端工具。

本案例採用的FTP客戶端工具:Filezilla、LFTP(yum安裝)。

官方網站:https://filezilla-project.org/download.php?show_all=1

vsftp部署安裝

 

 

主配置檔案:/etc/vsftpd/vsftpd.conf

主程式:/usr/sbin/vsftpd
       常用的全域性配置項:

l  listen=YES:是否以獨立執行的方式監聽服務

l  listen_address=192.168.x.x:設定監聽的 IP 地址

l  listen_port=21:設定監聽 FTP 服務的埠號

l  write_enable=YES:是否啟用寫入許可權

l  download_enable=YES:是否允許下載檔案

l  userlist_enable=YES:是否啟用 user_list 列表檔案

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

l  max_clients=0:限制併發客戶端連線數

l  max_per_ip=0:限制同一 IP 地址的併發連線數

l  guest_enable=YES:啟用虛擬使用者

l  user_config_dir=/etc/vsftpd/vsftpd_user_conf :虛擬使用者使用的配置檔案目錄

l  allow_writeable_chroot=YES:允許寫入使用者主目錄

常用的匿名 FTP 配置項:

l  anonymous_enable=YES:啟用匿名訪問

l  anon_umask=022:匿名使用者所上傳檔案的許可權掩碼

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

l  anon_upload_enable=YES:允許上傳檔案

l  anon_mkdir_write_enable=YES:允許建立目錄

l  anon_other_write_enable=YES:開放其他寫入權

l  anon_max_rate=0:限制最大傳輸速率(位元組/秒)
常用的本地使用者 FTP 配置項:

l  local_enable=YES:是否啟用本地系統使用者

l  local_umask=022:本地使用者所上傳檔案的許可權掩碼

l  local_root=/var/ftp:設定本地使用者的 FTP 根目錄

chroot_local_user=YES:是否將使用者禁錮在主目錄

建立賬號資料

vsftpd服務使用Berkeley DB格式的資料庫檔案來存放虛擬使用者賬號。建立這種資料庫檔案需要用到db_load工具,db_load工具由db4-utils軟體包提供,預設已安裝。

① 建立文字格式的使用者名稱、密碼列表。

奇數行:賬號名,偶數行:密碼(即上一行中賬號的密碼)

② 轉化為 Berkeley DB 格式的資料檔案

需要db_load 轉換工具,預設已安裝。

l  “-f”用於指定資料來源檔案

l  “-T”表示允許非Berkeley DB的應用程式使用從文字格式轉換的DB資料檔案

l  “-t hash”用於指定讀取資料檔案的基本方法

③ 為了提高虛擬使用者賬號檔案的安全性,應將檔案許可權設定為600,以免資料外洩。

① 建立 FTP 根目錄及虛擬使用者對映的系統使用者(此賬號無需設定密碼及登入shell)。如下:

 

 

 

t@ftp ~]# chmod -R 755 /home/vsftpd

① 建立支援虛擬使用者的PAM認證檔案
       建立好虛擬使用者的賬號資料檔案後,還需要對vsftpd服務的配置做相應的調整,以便識別並讀取新的使用者資訊。在vsftpd伺服器中,使用者認證是通過PAM(Pluggable Authentication Module,可插拔認證模組)機制來實現的,該機制包含靈活的選擇認證方式。Vsftpd服務預設的PAM認證檔案位於/etc/pam.d/vsftpd,該檔案適用於以Linux主機的系統使用者賬號進行認證。若要讀取虛擬使用者的賬號資料檔案,則需要建立新的PAM認證配置。

 

 

 

 

新增虛擬使用者支援

在 vsftpd.conf 檔案中新增虛擬使用者支援配置。

 

 

 

 

① 為不同的虛擬使用者建立獨立的配置檔案

通過前面的幾個步驟,實際上已經可以重新載入vsftpd並提供服務了,使用任一個虛擬使用者賬號都可以登入FTP伺服器並下載檔案。但因為所有的虛擬使用者都對映到同一個系統使用者賬號,因此FTP訪問許可權也是相同的,要麼只能下載,要麼只能上傳。

若要為不同的虛擬使用者賬號設定不同的訪問許可權,可以通過為每個虛擬使用者建立單獨的配置檔案來實現。為FTP使用者啟用獨立配置檔案,需要修改vsftpd.conf配置檔案,新增“user_config_dir”配置項。

 

有了上述配置以後,就可以在/etc/vsftpd/vsftpd_user_conf 目錄中為每個虛擬使用者分別建立配置檔案了。

 

 

 

重啟服務並測試

重啟服務生效配置檔案:

 

使用虛擬 FTP 賬戶訪問測試:

zhangsan使用者可以登入,並可以瀏覽、下載,也可以上傳。

測試之前:關閉防火牆以及安全規則;

 

 

 

 

使用lftp工具訪問

NFS節點上部署lftp客戶端:(命令列ftp客戶端)

[root@nfs ~]# yum -y install lftp

# lftp zhangsan@192.168.63.131

 

 

 

可以使用客戶端工具FileZilla Client檢視檔案

 

 

 

 

使用lftp相比使用ftp的優勢較多,可以顯示上傳下載的百分比進度以及可以上傳下載資料夾。

lftp 使用者名稱:密碼@ftp地址:傳送埠(預設21)

用法:

lftp username:password@127.0.0.1:21

lftp username@127.0.0.1 回車     ##預設21埠 回車後輸入密碼

lftp 127.0.0.1 回車   ##回車後 login 登入

lftp 回車 --> open 127.0.0.1 --> login 登入

訪問限制黑白名單

設定ftp黑白名單:(系統賬號FTP登入限制檔案)

ftpusers和user_list兩個檔案用途和區別:

ftpusers它不受任何配置項影響,總是有效,是黑名單!

 

為了說明這個問題,我們來建立兩個測試使用者:

test1: 在user_list中

test2:不在user_list中

然後我們分別給兩個配置項取不同的值,分4種Case進行測試:

Case 1: userlist_enable=YES, userlist_deny=YES

test1: 拒絕登入

test2: 允許登入

Case 2: userlist_enable=YES, userlist_deny=NO

test1: 允許登入

test2:拒絕登入(如user_list檔案開頭的註釋所述,甚至不會提示輸入密碼,即無登入提示框,直接拒絕連線)

Case 3: userlist_enable=NO,userlist_deny=NO

test1: 允許登入

test2: 允許登入

Case 4: userlist_enable=NO,userlist_deny=YES

test1: 允許登入

test2: 允許登入

當且僅當userlist_enable=YES時:userlist_deny項的配置才有效,user_list檔案才會被使用;當其為NO時,無論userlist_deny項為何值都是無效的,本地全體使用者(除去ftpusers中的使用者)都可以登入FTP

當userlist_enable=YES時,userlist_deny=YES時:user_list是一個黑名單,即:所有出現在名單中的使用者都會被拒絕登入;

當userlist_enable=YES時,userlist_deny=NO時:user_list是一個白名單,即:只有出現在名單中的使用者才會被准許登入(user_list之外的使用者都被拒絕登入);另外需要特別提醒的是:使用白名單後,匿名使用者將無法登入!除非顯式在user_list中加入一行:anonymous

NFS服務

4.1 什麼是NFS

它最大的功能就是可以通過網路,讓不同的機器、不同的作業系統可以共享彼此的檔案。

NFS伺服器可以讓PC將網路中的NFS伺服器共享的目錄掛載到本地端的檔案系統中,在本地端的系統中來看,那個遠端主機的目錄就好像是自己的一個磁碟分割槽一樣,在使用上相當便利;

而 NFS是通過網路來進行伺服器端和客戶端之間的資料傳輸,那麼兩者之間的傳輸資料就要有相對應的網路埠;基本上NFS伺服器的埠開在2049上,但是由於檔案系統較為複雜,NFS其他程式需要開啟一些額外的埠,而這些額外埠又是隨機的;那麼客戶端如何去知道這些額外隨機埠呢?

通過遠端過程呼叫(Remote Procedure Call,RPC)協議來實現!

 

4.2 RPC與NFS如何通訊

因為NFS支援的功能相當多,而不同的功能都會使用不同的程式來啟動,每啟動一個功能就會啟用一些埠來傳輸資料,因此NFS的功能對應的埠並不固定,客戶端要知道NFS伺服器端的相關埠才能建立連線進行資料傳輸,而RPC就是用來統一管理NFS埠的服務,並且統一對外的埠是111,RPC會記錄NFS埠的資訊,如此我們就能夠通過RPC實現服務端和客戶端溝通埠資訊。

通訊步驟:

1)首先伺服器端啟動RPC服務,並開啟111埠;

2)伺服器端啟動NFS服務,並向RPC註冊埠資訊;

3)客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS埠;

4)服務端的RPC(portmap)服務反饋NFS埠資訊給客戶端;

5)客戶端通過獲取的NFS埠來建立和服務端的NFS連線並進行資料的傳輸。

 

4.3 NFS企業在企業中的應用場景

在企業叢集架構的工作場景中,NFS網路檔案系統一般被用來儲存共享視訊、圖片、附件等靜態資原始檔,通常網站使用者上傳的檔案都會放到NFS共享中,例如BBS產品的圖片、附件、頭像(網站BBS的程式不要放在NFS共享中),然後前端所有節點在訪問這些靜態資源時都會讀取NFS儲存上的資源。

NFS是當前網際網路系統架構中最常用的資料儲存服務之一,特別是中小型網站應用頻率更高。

 

 

安裝所需依賴包(兩臺機器都需要安裝):

安裝完後檢視nfsnobody使用者在不在:

 

 

 啟動NFS相關服務

啟動rpc服務

 

 檢視rpc埠

 

 啟動nfs服務

 

 

 

 

 建立共享目錄  更改目錄許可權

 

 編輯nfs配置檔案

生效配置與檢驗測試

 

 

用於管理NFS(Network File System)檔案系統,在不直接編輯/etc/exports檔案的情況下,可用exportfs來操作(命令屬性、磁碟管理、命令屬許可權、超級使用者、普通使用者)。

# exportfs [-aruv]

引數說明如下:

l  -a:全部掛載(或解除安裝)/etc/exports檔案內的設定。

l  -r:重新掛載/etc/exports中的設定,此外同步更新/etc/exports及/var/lib/nfs/xtab中的內容。

l  -u:解除安裝某一目錄。

l  -v:在export時將共享的目錄顯示在螢幕上。

檢查有許可權掛載的伺服器是否能掛載:

方法1:

運用showmount命令查詢

# showmount --help

 Usage: showmount [-adehv]

        [--all] [--directories] [--exports]

        [--no-headers] [--help] [--version] [host]

l  -a或--all    以 host:dir 這樣的格式來顯示客戶主機名和掛載點目錄。

l  -d或--directories    僅顯示被客戶掛載的目錄名。

l  -e或--exports    顯示NFS伺服器的輸出清單。

l  -h或--help    顯示幫助資訊。

l  -v或--version    顯示版本信。

l  --no-headers    禁止輸出描述頭部資訊。

顯示指定NFS伺服器連線NFS客戶端的資訊

# showmount 192.168.100.12  #此ip為nfs伺服器的

顯示輸出目錄列表

# showmount -e

顯示指定NFS伺服器輸出目錄列表(也稱為共享目錄列表)

# showmount -e 192.168.100.12

顯示被掛載的共享目錄

# showmount -d

顯示客戶端資訊和共享目錄

# showmount -a

顯示指定NFS伺服器的客戶端資訊和共享目錄

# showmount -a 192.168.100.12

showmount -e IP地址或localhost   

 

 

.1 crond服務介紹

crond是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護程式,與windows下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動crond程式,crond程式每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

Linux下的任務排程分為兩類,系統任務排程和使用者任務排程。

① 系統任務排程:系統週期性所要執行的工作,比如寫快取資料到硬碟、日誌清理等。

在/etc/crontab檔案,這個就是系統任務排程的配置檔案。

 

② 使用者任務排程:使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。

使用者可以使用 crontab 工具來定製自己的計劃任務。

使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個欄位代表一項設定,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:

minutehourday month week command

各個欄位的含義:

l  minute:表示分鐘,可以是從0到59之間的任何整數。

l  hour:表示小時,可以是從0到23之間的任何整數。

l  day:表示日期,可以是從1到31之間的任何整數。

l  month:表示月份,可以是從1到12之間的任何整數。

l  week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。

l  command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。

l  在以上各個欄位中,還可以使用以下特殊字元:

l  星號(*):代表所有可能的值,例如day欄位如果是星號,則表示在滿足其它欄位的制約條件後每天都執行該命令操作。

l  逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”

l  中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“3-6”表示“3,4,5,6”

l  正斜線(/):可以用正斜線指定時間的間隔頻率,例如在hour欄位中“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。

檢驗是否安裝crontab:

如果未安裝crontab,運用本地yum安裝部署:

 

啟動服務並檢查服務狀態:

 

l  -u user   用來設定某個使用者的 crontab 服務,例如 "-u demo" 表示裝置 demo

l  使用者的 crontab 服務,此選項一般有 root 使用者來執行。

l  -e    編輯某個使用者的 crontab 檔案內容。如果不指定使用者,則表示編輯當前使用者的 crontab 檔案。

l  -l     顯示某使用者的 crontab 檔案內容,如果不指定使用者,則表示顯示當前使用者的 crontab 檔案內容。

l  -r  從 /var/spool/cron 刪除某使用者的 crontab 檔案,如果不指定使用者,則預設刪除當前使用者的 crontab 檔案。

l  -i     在刪除使用者的 crontab 檔案時,給確認提示。

 

 

給NFS節點掛載一個20G的磁碟

 

 

基礎搭建

修改主機名

關閉防火牆

 

yum安裝ftp

啟動ftp設定開機啟動

 

 建立虛擬使用者賬號

刪除原有的users.db

轉化為 Berkeley DB 格式的資料檔案:

設定DB檔案許可權提高安全性:

 

 

建立獨立的配置檔案

 

 

重啟服務

 

 NFS部署

檢查環境  安裝nfs依賴包

啟動nfs相關服務 啟動rpc服務: 啟動nfs服務 檢視rpc埠

 

 檢視埠對映情況

 

 劃分分割槽

 

格式化分割槽 永久掛載

 

建立目錄 增加掛載

 

 

 

生效配置與檢驗

 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章