1. 程式人生 > >NFS介紹、NFS服務端安裝配置、NFS配置選項、exportfs命令、NFS客戶端問題 、FTP介紹、用vsftpd搭建ftp、xshell使用xftp傳輸檔案、使用pure-ftpd搭建ftp服務

NFS介紹、NFS服務端安裝配置、NFS配置選項、exportfs命令、NFS客戶端問題 、FTP介紹、用vsftpd搭建ftp、xshell使用xftp傳輸檔案、使用pure-ftpd搭建ftp服務

一、NFS介紹

NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像訪問本地檔案一樣。NFS的資料傳輸基於RPC(remote procedure call)協議。

A,B,C三臺機器上需要被訪問到的檔案是一樣的,A共享資料出來,B和C分別取掛載A共享的資料目錄,從而B和C訪問到的資料和A上的一致。

二、NFS服務端安裝配置

準備兩臺虛擬機器,一臺作為服務端,一臺作為客戶端。

服務端 IP:192.168.8.130

安裝NFS工具

[[email protected] ~]# yum install -y nfs-utils rpcbind

配置

[[email protected] ~]# vim /etc/exports
/home/nfstestdir 192.168.8.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
#指定要進行分享的目錄;指定要共享該目錄的機器
 
建立分享目錄並制定許可權:
[[email protected] ~]# mkdir /home/nfstestdir
[[email protected] ~]# chmod 777 /home/nfstestdir

啟動NFS服務

在yum安裝完成後,系統會自動啟動rpcbind服務(在服務端程序名稱為systemd),預設監聽的埠時111埠

[[email protected] ~]# systemctl start nfs
 
將NFS服務加入開機啟動項:  
[[email protected] ~]# systemctl enable nfs

客戶端 IP:192.168.8.132

安裝NFS工具

[[email protected] ~]# yum install -y nfs-utils

客戶端掛載 檢查客戶端是否有許可權訪問服務端檔案:

[[email protected]
~]# showmount -e 192.168.8.130

報錯: 無法連線到服務端機器(網路不通

解決辦法:

檢查服務端NFS服務是否開啟(監聽111埠)
如果確認服務端NFS服務已經開啟,那麼檢查防火牆狀態,關閉服務端和客戶端firewalld和SELinux防火牆

解決完上述錯誤後再次執行命令:

[[email protected] ~]# showmount -e 192.168.8.130
Export list for 192.168.8.130:
/home/nfstestdir 192.168.8.0/24

客戶端可以正常訪問服務端機器 開始掛載

[[email protected] ~]# mount -t nfs 192.168.8.130:/home/nfstestdir /mnt/
 
[[email protected] ~]# df -h
檔案系統                        容量  已用  可用 已用% 掛載點
192.168.8.130:/home/nfstestdir   18G  7.5G   11G   42% /mnt

測試 在客戶機掛載目錄建立檔案:

[[email protected] ~]# cd /mnt/
[[email protected] mnt]# ll
總用量 0
-rw-r--r-- 1 mysql mysql 0 8月  23 19:50 test12

檢視服務端共享目錄:

[[email protected] ~]# ll /home/nfstestdir/
總用量 0
-rw-r--r--. 1 mysql mysql 0 8月  23 19:50 test123

同步共享

三、NFS配置選項

[[email protected] ](https://my.oschina.net/u/570656) ~]# vim /etc/exports
/home/nfstestdir 192.168.8.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
#指定要進行分享的目錄;指定要共享該目錄的機器
#rw 讀寫;ro 只讀
#sync 同步模式,記憶體資料實時寫入磁碟
#async 非同步模式
#no_root_squash 客戶端掛載NFS服務後,root使用者不受約束,許可權很大
#root_squash 與上面選項相對,客戶端上的root使用者受到約束,被限定成某個普通使用者
#all_squash 客戶端上所有使用者在使用NFS共享目錄時都被限定為一個普通使用者
#anonuid/anongid 和上面幾個選項搭配使用,定義被限定使用者的uid和gid
# 四、exportfs命令

exportfs命令用來管理當前NFS共享的檔案系統列表。

Options:
-a:全部解除安裝或全部掛載
-r:重新掛載
-u:解除安裝某個目錄
-v:顯示共享目錄

常用組合: exportfs -arv 服務端更改配置檔案後,不重啟服務,直接執行該命令就可以使更改後的配置檔案生效。

注意: 在重啟nfs服務之前需要先將所有掛載點解除安裝,否則將發生程式錯誤,嚴重者會拖垮系統

五、NFS客戶端問題

針對NFS4版本在centos6中應用存在如下問題: 客戶端掛載共享目錄後,不管是root使用者還是普通使用者,建立新檔案時屬主、陣列為nobody。

解決方法: 方法1:在客戶端進行掛載時加上選項-o nfsvers=3

[[email protected] ~]# monunt -t nfs -o nfsvers=3 192.168.8.130:/tmp/ /mnt/

如果目錄已經掛載,而又不想解除安裝,執行如下命令:

[[email protected] ~]# monunt -t nfs -o remount,nfsvers=3 192.168.8.130:/tmp/ /mnt/

方法2:客戶端和服務端都需要

[[email protected] ~]# vim /etc/idmapd.conf

把該配置檔案中的“Domain = local.domain.com”改為“Domain = xxx.com”(此處xxx.com自定義),然後重啟rpcidmapd服務(在centos7中直接重啟rpcbind服務)

六、FTP介紹

FTP(file transfer protocol)檔案傳輸協議,用於在Internet上控制檔案的雙向傳輸。FTP主要作用是讓使用者連線一個遠端計算機(這些計算機上執行著FTP伺服器程式)檢視遠端計算機有哪些檔案,然後把檔案從遠端計算機上拷貝到本地計算機,或把本地檔案傳送到遠端計算機。 該服務在小公司用的比較多,由於FTP服務的安全性較差,所以大公司不使用該服務。

七、使用vsftpd搭建ftp服務

安裝vsftpd工具 centos中預設自帶vsftpd安裝包。

[[email protected] ~]# yum install -y vsftpd

建立使用者:

[[email protected] ~]# useradd -s /sbin/nologin virftp

說明: vsftpd可以使用系統級別的使用者進行登入,但是這樣做不安全,所以需要使用vsftpd建立一個虛擬使用者。在此建立一個系統普通使用者的作用是使vsftpd的虛擬使用者來進行對映,然後完成資料的傳輸。

編輯虛擬使用者密碼檔案

[[email protected] ~]# vim /etc/vsftpd/vsftpd_login
testuser1
123456
 
更改檔案許可權:
[[email protected] ~]# chmod 600 /etc/vsftpd/vsftpd_login

注: 該檔案中內容奇數行為使用者名稱,偶數行為使用者密碼。

檔案轉換: 將該密碼檔案轉換成計算機能識別的二進位制檔案。

[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

建立虛擬使用者配置檔案

建立檔案存放目錄:
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf
 
[[email protected] ~]# cd /etc/vsftpd/vsftpd_user_conf
 
建立指定虛擬使用者配置檔案:  
[[email protected] vsftpd_user_conf]# vim testuser1
local_root=/home/virftp/testuser1
#定義虛擬使用者家目錄
anonymous_enable=NO
#是否允許匿名使用者登入
write_enable=YES
#是否可寫
local_umask=022
#定義建立新檔案時的預設許可權
anon_upload_enable=NO
#是否允許匿名使用者上傳檔案
anon_mkdir_write_enable=NO
#是否允許匿名使用者建立目錄檔案
idle_session_timeout=600
#空閒使用者保留時間
data_connection_timeout=120
#資料傳輸超時時間
max_client=10
#客戶端最大連線數量

注: 在此保持虛擬使用者配置檔案和虛擬使用者名稱稱一致。

建立虛擬使用者家目錄

[[email protected] vsftpd_user_conf]# mkdir /home/virftp/testuser1

建立一個檔案:
[[email protected] vsftpd_user_conf]# touch /home/virftp/testuser1/adai.txt
[[email protected] vsftpd_user_conf]# chown -R virftp:virftp /home/virftp

虛擬使用者密碼匹配

[[email protected] vsftpd_user_conf]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

說明: 在該檔案中新增這兩行內容,用於指定使用者密碼檔案位置。 注意: 在centos6中“/lib64/security/pam_userdb.so”該檔案區分版本(32位、64位)。

編輯vsftpd主配置檔案

[[email protected] vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
……
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
 
在檔案內容最後新增如下內容:  
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
#開啟虛擬使用者和系統使用者的對映
virtual_use_local_privs=YES
#使用虛擬使用者
user_config_dir=/etc/vsftpd_user_conf
allow_writeable_chroot=YES

啟動服務:

[[email protected] vsftpd_user_conf]# systemctl start vsftpd
 
[[email protected] vsftpd_user_conf]# ps aux |grep vsftpd
root      3671  0.0  0.0  52708   564 ?        Ss   18:40   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[[email protected] vsftpd_user_conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::21                   :::*                    LISTEN      3671/vsftpd

說明: FTP服務監聽21埠;sshd監聽22埠;telnet監聽23埠。

測試 如果在Windows系統進行測試,可以在Windows安裝filezilla軟體。在Linux中測試,安裝lftp工具。

[[email protected] ~]# yum install -y lftp

用法:

[[email protected] ~]# lftp [email protected]
口令: 
#登入
lftp [email protected]:~> ls      
drwxr-xr-x    2 1002     1002           22 Aug 24 10:19 testuser1
lftp [email protected]:/> ?
#查詢在lftp中可執行的命令
#常用命令:put、get
lftp [email protected]:/> get testuser1/adai.txt
lftp [email protected]:/> quit
 
[[email protected] ~]# ls
adai.txt  anaconda-ks.cfg

說明: 下載(get)的內容會儲存到當前目錄下。

八、xshell使用xftp傳輸檔案

在xshell按快捷鍵 ctrl+alt+f ,會自動彈出一個xftp的提示下載介面 進入到下載介面 在這裡插入圖片描述 選擇下載以後,會進入一個填寫資料的頁面,上面的是免費的,下面的收費的,我們選擇上面一個填寫資料 在這裡插入圖片描述 郵箱項,很重要。因為會在你的郵箱裡有下載地址和使用教程,是通過郵箱傳送,而且最好使用一些比較權威的郵箱;如果是qq郵箱國外發送郵件會有一些延遲 在這裡插入圖片描述 獲取到下載地址開始下載,就可以直接下載了 在這裡插入圖片描述 下載完成後,直接預設安裝,就可以使用了,這時再使用xshell登入主機,按下ctrl+alt+f;就會彈出一個xftp的頁面 在這裡插入圖片描述 開啟之後會進入到root目錄下,使用的是ssh協議 在這裡插入圖片描述 這時在虛擬機器上暫停掉21埠,會發現仍然可以傳輸檔案

systemctl stop vsftpd

若是需要下載linux系統裡的檔案,只需雙擊,或者直接拖動到左邊(桌面)就會有下載的檔案 總結 xftp走的是ssh協議,不屬於ftp,這種只要是linux開啟了sshd服務就可以用。 vsftp獲取其他ftp軟體實現的是ftp服務,windows上可以搭建,linux上也可以搭建

九、使用pure-ftpd搭建ftp服務

安裝pure-ftpd 先安裝擴充套件源:

[[email protected] ~]# yum install -y epel-release

安裝pure-ftpd:

[[email protected] ~]# yum install -y pure-ftpd

配置

[[email protected] ~]# vim /etc/pure-ftpd/pure-ftpd.conf
……
PureDB                        /etc/pure-ftpd/pureftpd.pdb
#開啟密碼配置檔案

啟動pure-ftpd服務

先關閉vsftpd:
[[email protected] ~]# systemctl stop vsftpd
 
啟動pure-ftpd:
[[email protected] ~]# systemctl start pure-ftpd

建立系統使用者及目錄

建立ftp測試目錄:
[[email protected] ~]# mkdir /data/ftp
[[email protected] ~]# useradd -u 1010 pure-ftp
[[email protected] ~]# chown -R pure-ftp:pure-ftp /data/ftp
建立虛擬使用者
[[email protected] ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
#建立虛擬使用者ftp_usera,並對映到系統使用者pure-ftp
#-d指定虛擬使用者的家目錄(同系統使用者的家目錄)
Password: 
Enter it again: 
#設定密碼123456
[[email protected] ~]# pure-pw -h
#檢視pure-pw可執行的命令

登入 & 測試

[[email protected] ~]# pure-pw mkdb
#必須先執行該命令,否則無法登陸
 
[[email protected] ~]# touch /data/ftp/123.txt
#建立測試檔案

登入:
[[email protected] ~]# lftp [email protected]
口令: 
lftp [email protected]:~> ls
drwxr-xr-x    2 1010       pure-ftp           21 Aug 25 12:25 .
drwxr-xr-x    2 1010       pure-ftp           21 Aug 25 12:25 ..
-rw-r--r--    1 0          0                   0 Aug 25 12:25 123.txt
lftp [email protected]:/> quit

ftp的主動模式與被動模式

FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動模式和被動模式.

主動模式

主動模式的FTP工作原理:客戶端從一個任意的非特權埠N連線到FTP伺服器的命令埠,也就是21埠。然後客戶端開始監聽埠N+1,併發送FTP命令“port N+1”到FTP伺服器。接著伺服器會從它自己的資料埠(20)連線到客戶端指定的資料埠(N+1)。

針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支援主動方式FTP:

任何大於1024的埠到FTP伺服器的21埠。(客戶端初始化的連線)
FTP伺服器的21埠到大於1024的埠。 (伺服器響應客戶端的控制埠)
FTP伺服器的20埠到大於1024的埠。(伺服器端初始化資料連線到客戶端的資料埠)
大於1024埠到FTP伺服器的20埠(客戶端傳送ACK響應到伺服器的資料埠)
被動模式

為了解決伺服器發起到客戶的連線的問題,人們開發了一種不同的FTP連線方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知伺服器它處於被動模式時才啟用。 在被動方式FTP中,命令連線和資料連線都由客戶端發起,這樣就可以解決從伺服器到客戶端的資料埠的入方向連線被防火牆過濾掉的問題。 當開啟一個 FTP連線時,客戶端開啟兩個任意的非特權本地埠(N > 1024和N+1)。第一個埠連線伺服器的21埠,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許伺服器來回連它的資料埠,而是提交 PASV命令。這樣做的結果是伺服器會開啟一個任意的非特權埠(P > 1024),併發送PORT P命令給客戶端。然後客戶端發起從本地埠N+1到伺服器的埠P的連線用來傳送資料。

對於伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的FTP:

從任何大於1024的埠到伺服器的21埠(客戶端初始化的連線)
伺服器的21埠到任何大於1024的埠(伺服器響應到客戶端的控制埠的連線)
從任何大於1024埠到伺服器的大於1024埠(客戶端初始化資料連線到伺服器指定的任意埠)
伺服器的大於1024埠到遠端的大於1024的埠(伺服器傳送ACK響應和資料到客戶端的資料埠)

從上面可以看出,兩種方式的命令鏈路連線方法是一樣的,而資料鏈路的建立方法就完全不同,

主動FTP:

命令連線:客戶端 >1024埠 -> 伺服器 21埠
資料連線:客戶端 >1024埠 <- 伺服器 20埠

被動FTP:

命令連線:客戶端 >1024埠 -> 伺服器 21埠
資料連線:客戶端 >1024埠 -> 伺服器 >1024埠

主動模式ftp與被動模式FTP優點和缺點:

主動FTP對FTP伺服器的管理和安全很有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機埠建立連線,而這個埠很有可能被客戶端的防火牆阻塞掉。被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連線,其中一個連到一個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉

擴充套件