1. 程式人生 > >Linux下nfs配置以及使用

Linux下nfs配置以及使用

1.nfs配置

NFS概念

網路檔案系統(NFS)是Unix系統和網路附加儲存檔案管理器常用的網路檔案系統,允許多個客戶端通過網路共享檔案訪問。它可用於提供對共享二進位制

目錄的訪問,也可用於允許使用者在同一工作組中從不同客戶端訪問其檔案。NFS協議有多個版本:Linux支援版本4、版本3和版本2, 而大多數系統管理員

熟悉的是NFSv3。預設情況下,該協議並不安全,但是更新的版本(如NFSv4)提供了對更安全的身份驗證的支援,甚至可以通過kerberos進行加密。

NFS伺服器配置

若要配置基本NFS伺服器,您應該安裝nfs-utils軟體包。然後,您應該編輯/etc/exports以列出您希望通過網路與客戶端系統共享的檔案系統,並指出哪些客戶端對匯出具有何種訪問許可權。例如:/var/ftp/pub

192.168.0.0/24(ro,sync)

將目錄/var/ftp/pub匯出至192.168.0.0/24網路上的所有主機(對目錄具有隻讀許可權)。

/export/homes *.example.com(rw,sync)

將目錄/export/homes匯出至exmaple.com中的所有主機(對目錄具有讀寫許可權)。

當NFS伺服器執行時,每次您編輯/etc/exports後,都應通過在儲存更改後執行exportfs -r來確保應用這些更改。您可以使用exportfs -v顯示所有匯出。NFSv4還匯出pseudo-root(所有匯出的檔案系統的root)。如果客戶端掛載nfs-server:/ ,這將在NFS伺服器上的/下面相對於其位置掛載所有匯出檔案系統。這對於瀏覽從客戶端的伺服器匯出的所有檔案系統有用。您仍可單獨掛載檔案系統。

5預設情況下,NFS伺服器將NFS客戶端上的root視為使用者nfsnobody。即,如果root嘗試訪問掛載的匯出中的檔案,伺服器會將其視作使用者nfsnobody訪問。在NFS匯出被無磁碟客戶端用作/和root需要被視作root的情況中,這種安全措施存在隱患。若要禁用此保護,伺服器需要將no_root_squash新增到在/etc/exports中匯出設定的選項列表:

/exports/root

192.168.0.1(rw,no_root_squash)

對於NFSv4,必須在伺服器上開啟埠2049/TCP(對於nfsd)。對於NFSv3和更早版本,必須為rpcbind、rpc.mountd、lockd和rpc.rquotad開啟更多埠,而在“隨機”選擇的埠上啟動其中許多服務這一事實又增加了複雜性。此外,NFSv2和NFSv3支援UDP傳輸,還要求開啟相應的埠

。本課程中我們將關注NFSv4。

6Demo

1. 啟動NFS服務:

# systemctl start nfs-server ; systemctl enable nfs-server

2. 建立共享目錄並設定許可權:

# mkdir /nfsshare ; chown nfsnobody /nfsshare

3. 編輯/etc/exports。例如:

/nfsshare/read 172.25.0.0/24(ro,sync)

/nfsshare/write 172.25.0.0/24(rw,sync) 127.0.0.1(rw,sync)

4. 從客戶端檢視並掛載NFS pseudo-root共享:

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

[[email protected] ~]# mkdir /mnt/nfsshare

[[email protected] ~]# mount -t nfs server0.example.com:/ /mnt/nfsshare

www.westos.org

7永久掛載NFS檔案系統:

將相應的行新增至/etc/fstab:

nfsserver:/nfsshare

/mnt/nfsshare nfs defaults 0 0

客戶端NFS掛載選項

 rw:掛載可讀寫的檔案系統

 ro:掛載只讀檔案系統

vers=4:嘗試只使用指定的NFS版本進行掛載。如果伺服器不支援該版本,則掛載請求失敗

soft:如果NFS請求超時,三次嘗試後返回錯誤。權衡資料完整性與提高客戶端響應性。(預設行為hard,將無限期地重試)。

8保護NFS輸出

Demo:

在serverx和desktopx上執行指令碼,加入kerberos認證域:

# lab nfskrb5 setup

安裝kerberos服務所需的keytab:(以下操作都在server0上進行)

# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/server0.keytab

啟用NFS v4.2版本,可以輸出selinux標籤,編輯/etc/sysconfig/nfs修改如下選項:

RPCNFSDARGS="-V 4.2"

啟動nfs-secure-server服務:

# systemctl start nfs-secure-server; systemctl enable nfs-secure-server

配置NFS輸出:

# mkdir /securenfs

# echo '/securenfs desktop0(sec=krb5p,rw)' >> /etc/exports

# exportfs -r

9安裝kerberos服務所需keytab:(以下操作都在dekstop0進行)

# wget -O /etc/krb5.keytab http://classroom.example.com/pub/keytabs/desktop0.keytab

啟動nfs-secure服務:

# systemctl start nfs-secure; systemctl enable nfs-secure

配置客戶端掛載:

# mkdir /mnt/secureshare

# echo 'server0:/securenfs /mnt/secureshare

/etc/fstab

nfs defaults,v4.2,sec=krb5p 0 0' >>

# mount -a

操作例項:

服務端

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

Loaded plugins: langpacks

Package 1:nfs-utils-1.3.0-0.el7.x86_64 already installed and latest version

Nothing to do

[[email protected] mnt]# systemctl start nfs

[[email protected] mnt]# firewall-cmd --permanent --add-service=nfs

success

[[email protected] mnt]# firewall-cmd --permanent --add-service=mountd

success

[[email protected] mnt]# firewall-cmd --reload

success

[[email protected] mnt]# firewall-cmd --permanent --add-service=rpc-bind

success

[[email protected] mnt]# firewall-cmd --reload

success

[[email protected]t mnt]# vim /etc/exports

[[email protected] mnt]# exportfs -rv

exporting 172.25.254.0:/westos

[[email protected] mnt]# vim /etc/exports

[[email protected] mnt]# exportfs -rv

exporting 172.25.254.0/24:/westos

[[email protected] mnt]# showmount -e 172.25.254.100

Export list for 172.25.254.100:

/westos 172.25.254.0/24

[[email protected] mnt]# showmount -e 172.25.254.137

Export list for 172.25.254.137:

/westos 172.25.254.0/24

客戶端

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

Export list for 172.25.254.137:

/westos 172.25.254.0/24

[[email protected] ~]# mount 172.25.254.137/westos /mnt

mount: special device 172.25.254.137/westos does not exist

[[email protected] ~]# mount 172.25.254.137:/westos /mnt

[[email protected] ~]# df

Filesystem             1K-blocks     Used Available Use% Mounted on

/dev/sda5               66816128 31267544  35548584  47% /

devtmpfs                 1870084        0   1870084   0% /dev

tmpfs                    1883192      500   1882692   1% /dev/shm

tmpfs                    1883192     9048   1874144   1% /run

tmpfs                    1883192        0   1883192   0% /sys/fs/cgroup

/dev/sda2                 508588   149448    359140  30% /boot

tmpfs                     376640       28    376612   1% /run/user/1000

/dev/sdb1               30703568 16409024  14294544  54% /run/media/kiosk/ECHO SWEET

172.25.254.137:/westos  10473984  3158528   7315456  31% /mnt

[[email protected] ~]# cd /mnt

[[email protected] mnt]# ls

file1

[[email protected] mnt]# touch file

[[email protected] mnt]#