NFS

1.課程目標html

瞭解什麼是NFS及其功能;
掌握NFS的配置;
掌握NFS的驗證;
可以單獨熟練、靈活運用NFS。

2.NFS概述
NFS(Network Files System),網絡文件系統是1980年由SUN發展出來在UNIX&Linux系統間實現磁盤文件共享的一種方法。它是一種文件系統協議:支持應用程序在客戶端經過網絡存取位於服務器磁盤中的數據。NFS的基本原則是讓不一樣的客戶端及服務器經過一組RPCs共享相同的文件系統,它獨立於操做系統,容許不一樣硬件及操做系統的系統共同進行文件的共享。vim

雖然NFS能夠在網絡中進行文件共享,但NFS在設計時並無提供數據傳輸的功能。須要藉助RPC(Remote Procedure Calls,遠程過程調用)。RPC定義了一種進程間經過網絡進行交互通訊的機制,它容許客戶端進程經過網絡向遠程服務進程請求服務,而不須要了解服務器底層的通訊協議詳細信息。安全

當一個RPC鏈接創建開始階段,客戶端創建過程調用,將調用參數發送到遠程服務器進程,並等待相應。請求到達時,服務器經過客戶端請求的服務,調用指定的程序。並將結果返回客戶端。當RPC調用結束,客戶端程序將繼續進行下一步的通訊操做。bash

NFS依賴RPC與外部通訊,爲保證NFS服務正常工做,其須要在RPC註冊相應的服務端口信息,這樣客戶端向服務器的RPC提交訪問某個服務的請求時,服務器纔可以正確做出相應。服務器

註冊NFS服務時,須要先開啓RPC,才能保證NFS註冊成功。而且若是RPC服務從新啓動,其保存的信息將丟失,需從新啓動NFS服務以註冊端口信息,不然客戶端將沒法訪問NFS服務器。網絡

3.NFS主配置文件介紹
NFS的主配置文件路徑爲:/etc/exports。默認爲空,須要手動添加配置參數。app

主配置文件書寫格式:
共享目錄 [客戶端(參數)]ssh

說明:async

共享目錄:域共享目錄的實際路徑(要使用絕對路徑);
客戶端:定義客戶端匹配時可使用FQDN、IP地址、網段、DNS區域。客戶端匹配條件表示方法以下:

NFS客戶端匹配
客戶端指定方法ide

示例

知足示例的客戶端
IP指定單一主機

客戶端IP地址爲(192.168.1.1)
指定網段

客戶端所在網段爲192.168.1.0/24

域名單一主機

Nfs.example.com

客戶端FQDN爲nfs.example.com
域名指定範圍

*.example.com

客戶端FQDN的DNS後綴爲example.com
全部主機

任何訪問NFS服務器的客戶端

參數:對知足客戶端匹配條件的客戶端進行相關配置。可用參數以下(其中匿名用戶指的是nfsnobody):

NFS參數
參數

說明
ro

設置共享爲只讀,缺省選項
rw

設置共享爲讀寫
root_squash

當源計算機(NFS客戶端)當前用戶是root時,將被映射爲目標計算機(NFS服務器)的匿名用戶
no_root_squash

當源計算機(NFS客戶端)當前用戶是root時,將被映射爲目標計算機(NFS服務器)的root用戶
all_squash

將全部用戶映射爲目標計算機(NFS服務器)的匿名用戶,NFS缺省選項
anonuid

設置匿名用戶的UID
anongid

設置匿名用戶的GID
sync

保持數據同步,同時將數據寫入內存和硬盤,缺省選項
async

先將數據保存在內存,而後寫入硬盤,效率更高,但可能形成數據丟失
secure

NFS客戶端必須使用NFS保留端口(1024如下的端口),缺省選項
insecure

容許NFS客戶端不使用保留端口(1024如下的端口)
wdelay

若是NFS服務器懷疑有另外一個相關的寫請求正在處理或立刻就要達到,NFS服務器將延遲提交寫請求到磁盤,這就容許使用一個操做提交多個寫請求到磁盤,能夠改善性能,缺省選項
nowdelay

設置了async時該選項無效,NFS服務器將每次寫操做寫入磁盤

4.NFS服務配置
Redhat Linux中,NFS默認是已經安裝的,因此在實驗中,只需啓動服務便可,不用再安裝NFS服務。

4.1.服務的啓動
查看服務狀態
[iyunv@server30 ~]# systemctl status nfs-service.service
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled)
Active: inactive (dead)
缺省沒有啓動,因此要先啓動服務。
[iyunv@server30 ~]# systemctl enable nfs-server.service
//開啓下次系統重啓自動加載
ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
[iyunv@server30 ~]# systemctl restart nfs-server.service
[iyunv@server30 ~]# systemctl status nfs
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled)
Active: active (exited) since Mon 2015-05-18 13:47:51 CST; 4s ago
Process: 2035 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT (code=exited, status=0/SUCCESS)
Process: 2031 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 2030 ExecStartPre=/usr/libexec/nfs-utils/scripts/nfs-server.preconfig (code=exited, status=0/SUCCESS)
Main PID: 2035 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service

May 18 13:47:51 server30.example.com systemd[1]: Started NFS Server.

4.2.只讀共享目錄
例:將server30.example.com(172.16.30.130)上的/public目錄經過nfs共享出去,讓desktop30.example.com(172.16.30.30)能訪問到,而且掛載到本地的public目錄,只有可讀權限。
----------------------------------------------------server端設置-----------------------------------------------
[iyunv@server30 ~]# mkdir /public
[iyunv@server30 ~]# ls -ld /public
drwxr-xr-x. 2 root root 6 May 18 14:07 /public/
//建立共享目錄
[iyunv@server30 ~]# cd /public/
[iyunv@server30 public]# touch freeit.txt
[iyunv@server30 public]# ls
freeit.txt
//建立一個文件驗證
[iyunv@server30 ~]# vim /etc/exports
/public 172.16.30.130/24(ro,sync)
[iyunv@server30 ~]# systemctl restart nfs-server.service
--------------------------------------------------服務端防火牆容許NFS-------------------------------------
[iyunv@server30 public]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
//默認不容許NFS*rpc-bind服務
[iyunv@server30 public]# firewall-cmd --add-service=nfs --permanent
success
[iyunv@server30 public]# firewall-cmd --add-service=rpc-bind --permanent
success
[iyunv@server30 public]# firewall-cmd --reload
success
[iyunv@server30 public]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcpv6-client nfs rpc-bind ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
------------------------------------------------客戶端設置--------------------------------------------------------
[iyunv@desktop30 ~]# mkdir /public
[iyunv@desktop30 ~]# mount -t nfs 172.16.30.130:/public /public/
[iyunv@desktop30 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/rhel-root 5109760 3021156 2088604 60% /
devtmpfs 496096 0 496096 0% /dev
tmpfs 505404 80 505324 1% /dev/shm
tmpfs 505404 7168 498236 2% /run
tmpfs 505404 0 505404 0% /sys/fs/cgroup
/dev/sda1 201388 106036 95352 53% /boot
172.16.30.130:/public 5109760 3021440 2088320 60% /public
[iyunv@desktop30 ~]# cd /public/
[iyunv@desktop30 public]# ls
freeit.txt
[iyunv@desktop30 public]# touch gyh
touch: cannot touch ‘gyh’: Read-only file system
如上:ls查看能夠看到內容,可是touch時提示只讀權限,不能建立。

在配置NFS共享目錄完成後,須要從新啓動NFS服務,或者經過命令:exports –ar命令使配置生效。也能夠經過查看/var/lib/nfs/etab文件顯示NFS共享目錄的全部參數(包括全部明確配置及未明確配置而使用缺省值的參數)。

查看/var/lib/nfs/etab文件
[iyunv@server30 ~]# cat /var/lib/nfs/etab
/public 172.16.30.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)

4.3.可寫共享目錄
例:接着上個實驗,本部分來研究對共享目錄的寫權限操做。現增長要求,desktop30掛載server30的/public目錄後,能夠建立文件或目錄。具體操做以下:

首先,修改server30上的NFS配置,改ro爲rw,讓共享出去的文件對訪問者可寫
[iyunv@server30 ~]# vim /etc/exports
/public 172.16.30.30/24(rw,sync)

重啓服務
[iyunv@server30 ~]# systemctl restart nfs-server.service

與Samba同樣,共享出去的目錄在配置文件中設置可寫以外,服務器端的本地文件也要給其可寫權限,不然即便配置文件中給了可寫參數,客戶端掛載以後仍然沒有寫權限,兩者是缺一不可的,因此,下面的配置就是要給服務端的本地共享出去的文件寫權限,爲方便起見,直接給其777的權限
[iyunv@server30 ~]# chmod 777 /public
[iyunv@server30 ~]# ls -ld /public
drwxrwxrwx. 2 root root 23 May 18 14:12 /public

接下來客戶端掛載驗證
[iyunv@desktop30 ~]# mount -t nfs 172.16.30.130:/public /public/
[iyunv@desktop30 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/rhel-root 5109760 3021512 2088248 60% /
devtmpfs 496096 0 496096 0% /dev
tmpfs 505404 80 505324 1% /dev/shm
tmpfs 505404 7168 498236 2% /run
tmpfs 505404 0 505404 0% /sys/fs/cgroup
/dev/sda1 201388 106036 95352 53% /boot
172.16.30.130:/public 5109760 3021824 2087936 60% /public
[iyunv@desktop30 ~]# cd /public/
[iyunv@desktop30 public]# ls
freeit.txt
[iyunv@desktop30 public]# touch gyh.txt
[iyunv@desktop30 public]# ls
freeit.txt gyh.txt
//建立成功,此時具備寫權限。

4.4.用戶訪問權限
同爲文件共享服務,NFS對訪問用戶的控制沒有Samba的功能強大,可是基本也可知足平常工做對NFS的須要。NFS中,與訪問用戶的控制相關的參數主要有:root_squash、no_root_squash、all_squash、anonuid、anongid。下面看幾個例子(本部分實驗仍然用上部分的實驗環境):

例1:查看客戶端登陸時服務器缺省映射爲那個用戶
[iyunv@desktop30 public]# ll
total 0
-rw-r--r--. 1 root root 0 May 18 14:12 freeit.txt
-rw-r--r--. 1 nfsnobody nfsnobody 0 May 18 16:12 gyh.txt
如上:【可寫共享目錄】實驗中建立的文件gyh.txt默認的用戶和組爲nfsnobody。此爲缺省參數all_squash的做用,也就是說,無論客戶端以什麼身份登陸到本身的系統,缺省都映射爲nfsnobody。

例2:no_root_squash參數:客戶端以本地root身份登陸服務器時,也擁有root用戶權限
[iyunv@server30 ~]# vim /etc/exports
/public 172.16.30.30/24(rw,no_root_squash,sync)
~
[iyunv@server30 ~]# systemctl restart nfs-server.service
如上,客戶端以本地root用戶登陸時,服務器在此參數的做用下把其映射爲服務器端的root用戶。

例3:anonuid&anongid參數:不論客戶端以什麼身份登陸,缺省都映射爲指定用戶的UID和指定組的GID。
-------------------------------------------------服務器端設置----------------------------------------------
[iyunv@server30 ~]# id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1)
[iyunv@server30 ~]# vim /etc/exports
/public 172.16.30.30/24(rw,anonuid=1001,anongid=1001,sync)
[iyunv@server30 ~]# systemctl restart nfs-server.service
-------------------------------------------------客戶端驗證------------------------------------------------
[iyunv@desktop30 public]# touch 456.txt
[iyunv@desktop30 public]# ll
total 0
-rw-r--r--. 1 root root 0 May 18 17:08 123.txt
-rw-r--r--. 1 1001 1001 0 May 18 17:17 456.txt
-rw-r--r--. 1 root root 0 May 18 14:12 freeit.txt
-rw-r--r--. 1 nfsnobody nfsnobody 0 May 18 16:12 gyh.txt

4.5.NFS的kerberos驗證
本部分以題目的形式來實驗。

題目:

第一部分:主要爲server端配置
在Server30上配置NFS,以讀寫的方式共享/protected,能被example.com內用戶訪問;
訪問/protected須要經過kerberos安全加密,可使用此連接密鑰:http://ldap.example.com/pub/server30.keytea;
目錄/protected應該包含名爲project擁有人爲guest2001的子目錄且用戶guest2001能以讀寫方式訪問/protected/project; 


第二部分:主要爲客戶端配置
在desktop30上掛載來自於server30的nfs共享,/protected掛載在目錄/mnt/nfssecure,並使用安全的方式,密鑰連接爲:http://ldap.example.com/pub/desktop30.keytab;
掛載爲啓動時自動掛載;
用戶guest2001能在/mnt/nfssecure/project上建立文件。

第一部分:server端的配置

主配置文件添加共享資源
[iyunv@server30 ~]# vim /etc/exports
/public 172.16.30.30/24(rw,anonuid=1001,anongid=1001)
/protected 172.16.30.0/24(rw,sec=krb5p)
~
[iyunv@server30 ~]# mkdir /protected
//建立共享目錄

配置kerberos驗證,須要添加服務器到ldap域中,使用kerberos服務器驗證。kerberos驗證也須要安裝幾個工具,而後作添加到LDAP的操做。以下:
[iyunv@server30 ~]# yum -y install authconfig* sssd* krb5*
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
base | 4.1 kB 00:00
(1/2): base/group_gz | 134 kB 00:00
(2/2): base/primary_db | 3.4 MB 00:00
Package authconfig-6.2.8-8.el7.x86_64 already installed and latest version
Package sssd-client-1.11.2-65.el7.x86_64 already installed and latest version
Package krb5-libs-1.11.3-49.el7.x86_64 already installed and latest version
Resolving Dependencies
[iyunv@server30 ~]# authconfig-gtk
//此命令打開驗證配置界面,以下:

①選擇[identity*authentication],進行身份驗證配置
②選擇【ldap】,加入到ldap域進行驗證
③填寫ldap的DN,
④填寫ldap的路徑,要以ldap開頭,//後面爲ldap服務器的主機名
⑤此處要勾選
⑥點擊此處,彈出以下界面,填寫證書的密鑰連接,下載證書

①填寫連接:http://ldap.example.com/pub/EXAMPLE-CA.crt
②點擊【ok】完成證書鏈設置

①根據題目要求,這裏要選擇kerberos驗證方式
②填寫認證服務的kerberos Realm(域)
③此處的勾選要去掉,不然不能進行下一步操做
④填寫認證服務的kerberos KDC
⑤填寫認證服務的kerberos Admin Server
⑥點擊【Apply】完成認證配置

NFS的版本有許多,Redhat Linux7中的NFS使用版本爲4.2,kerberos驗證爲其特有的驗證方式,因此要指明NFS版本,在/etc/sysconfig/nfs配置文件中添加:
[iyunv@server30 ~]# vim /etc/sysconfig/nfs
1 #
2 # Optinal options passed to rquotad
3 RPCRQUOTADOPTS=""
4 #
5 # Optional arguments passed to in-kernel lockd
6 #LOCKDARG=
7 # TCP port rpc.lockd should listen on.
8 #LOCKD_TCPPORT=32803
9 # UDP port rpc.lockd should listen on.
10 #LOCKD_UDPPORT=32769
11 #
12 # Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
13 RPCNFSDARGS="-V 4.2"
14 # Number of nfs server processes to be started.
15 # The default is 8.
16 RPCNFSDCOUNT=8
17 # Set V4 grace period in seconds
18 #NFSD_V4_GRACE=90
19 #
20 # Optional arguments passed to rpc.mountd. See rpc.mountd(8)
21 RPCMOUNTDOPTS=""
22 #
23 # Optional arguments passed to rpc.statd. See rpc.statd(8)
24 STATDARG=""
25 #
26 # Optional arguments passed to rpc.idmapd. See rpc.idmapd(8)
27 RPCIDMAPDARGS=""
28 #
29 # Optional arguments passed to rpc.gssd. See rpc.gssd(8)
30 RPCGSSDARGS=""
31 # Enable usage of gssproxy. See gssproxy-mech(8).
32 GSS_USE_PROXY="no"
33 #
34 # Optional arguments passed to rpc.svcgssd. See rpc.svcgssd(8)
35 RPCSVCGSSDARGS=""
36 #
37 # Optional arguments passed to blkmapd. See blkmapd(8)
38 BLKMAPDARGS=""
如上:只需在第13行添加-V 4.2便可。

Kerberos驗證,須要服務器和客戶端的時間上不能有太大的差距,因此,爲了保證時間準確,還要指定NTP服務器,以下:
[iyunv@server30 ~]# vim /etc/chrony.conf
1 # Use public servers from the pool.ntp.org project.
2 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
3 #server 0.rhel.pool.ntp.org iburst
4 #server 1.rhel.pool.ntp.org iburst
5 #server 2.rhel.pool.ntp.org iburst
6 #server 3.rhel.pool.ntp.org iburst
7 server ldap.example.com iburst
……

[iyunv@server30 ~]# systemctl restart chronyd.service
如上,將原有的第四、五、6行註釋掉,而後添加第7行內容,指定NTP服務器。最後不要忘記重啓chronyd.service服務。

下載用於kerberos驗證的密鑰
[iyunv@server30 ~]# wget -O /etc/krb5.keytab http://ldap.example.com/pub/server30.keytab
--2015-05-18 18:31:57-- http://ldap.example.com/pub/server30.keytab
Resolving ldap.example.com (ldap.example.com)... 172.16.30.254
Connecting to ldap.example.com (ldap.example.com)|172.16.30.254|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3026 (3.0K)
Saving to: ‘/etc/krb5.keytab’

100%[======================================>] 3,026 --.-K/s in 0s

2015-05-18 18:31:57 (230 MB/s) - ‘/etc/krb5.keytab’ saved [3026/3026]

[iyunv@server30 ~]# ls /etc/krb5.keytab
/etc/krb5.keytab

根據題目要求,在共享資源下建立project目錄,並設置guest2001爲其擁有者
[iyunv@server30 ~]# mkdir /protected/project
[iyunv@server30 ~]# id guest2001
uid=2001(guest2001) gid=2001(guest2001) groups=2001(guest2001)
[iyunv@server30 ~]# chown guest2001 /protected/project/
[iyunv@server30 ~]# ll /protected/
total 0
drwxr-xr-x. 2 guest2001 root 6 May 18 18:34 project
注:guest2001是加入ldap域後獲取的用戶,默認本地沒有。

最後,對於服務的重啓,不只要重啓nfs服務,同時也要重啓nfs的另外兩個用於安全驗證的服務,以下:
[iyunv@server30 ~]# systemctl enable nfs-server.service nfs-secure-server.service nfs-secure.service
ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service'
ln -s '/usr/lib/systemd/system/nfs-secure.service' '/etc/systemd/system/nfs.target.wants/nfs-secure.service'
[iyunv@server30 ~]# systemctl restart nfs-server.service nfs-secure-server.service nfs-secure.service

[iyunv@server30 ~]# systemctl status nfs-server.service nfs-secure-server.service nfs-secure.service
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled)
Active: active (exited) since Mon 2015-05-18 18:43:23 CST; 14s ago
Process: 5695 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 5692 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 5705 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT (code=exited, status=0/SUCCESS)
Process: 5703 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 5701 ExecStartPre=/usr/libexec/nfs-utils/scripts/nfs-server.preconfig (code=exited, status=0/SUCCESS)
Main PID: 5705 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service

May 18 18:43:23 server30.example.com systemd[1]: Starting NFS Server...
May 18 18:43:23 server30.example.com systemd[1]: Started NFS Server.

nfs-secure-server.service - Secure NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-secure-server.service; enabled)
Active: active (running) since Mon 2015-05-18 18:43:23 CST; 14s ago
Process: 5723 ExecStart=/usr/sbin/rpc.svcgssd $RPCSVCGSSDARGS (code=exited, status=0/SUCCESS)
Main PID: 5725 (rpc.svcgssd)
CGroup: /system.slice/nfs-secure-server.service
└─5725 /usr/sbin/rpc.svcgssd

May 18 18:43:23 server30.example.com systemd[1]: Started Secure NFS Server.

nfs-secure.service - Secure NFS
Loaded: loaded (/usr/lib/systemd/system/nfs-secure.service; enabled)
Active: active (running) since Mon 2015-05-18 18:43:23 CST; 14s ago
Process: 5691 ExecStart=/usr/sbin/rpc.gssd $RPCGSSDARGS (code=exited, status=0/SUCCESS)
Main PID: 5693 (rpc.gssd)
CGroup: /system.slice/nfs-secure.service
└─5693 /usr/sbin/rpc.gssd

第二部分:客戶端配置

建立本地掛載目錄/mnt/nfssecure
[iyunv@desktop30 ~]# mkdir /mnt/nfssecure
[iyunv@desktop30 ~]# ls /mnt/
nfssecure

要進行安全的掛載,也就是使用kerberos驗證,因此,客戶端一樣也要加入到ldap域中,方式與服務器端同樣,須要安裝三個工具並打開驗證配置界面。此處再也不贅述。略過。

而後指定NTP服務器,同步時間
[iyunv@desktop30 ~]# vim /etc/chrony.conf

1 # Use public servers from the pool.ntp.org project.
2 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
3 #server 0.rhel.pool.ntp.org iburst
4 #server 1.rhel.pool.ntp.org iburst
5 #server 2.rhel.pool.ntp.org iburst
6 #server 3.rhel.pool.ntp.org iburst
7 server ldap.example.com iburst

[iyunv@desktop30 ~]# systemctl restart chronyd.service

下載密鑰
[iyunv@desktop30 ~]# wget -O /etc/krb5.keytab http://ldap.example.com/pub/desktop30.keytab
--2015-05-18 18:50:00-- http://ldap.example.com/pub/desktop30.keytab
Resolving ldap.example.com (ldap.example.com)... 172.16.30.254
Connecting to ldap.example.com (ldap.example.com)|172.16.30.254|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3026 (3.0K)
Saving to: ‘/etc/krb5.keytab’

100%[======================================>] 3,026 --.-K/s in 0s

2015-05-18 18:50:01 (263 MB/s) - ‘/etc/krb5.keytab’ saved [3026/3026]

[iyunv@desktop30 ~]# ls /etc/krb5.keytab
/etc/krb5.keytab

一樣,客戶端也須要啓動nfs的安全驗證服務
[iyunv@desktop30 ~]# systemctl enable nfs-secure.service nfs-secure-server.service
ln -s '/usr/lib/systemd/system/nfs-secure.service' '/etc/systemd/system/nfs.target.wants/nfs-secure.service'
ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service'
[iyunv@desktop30 ~]# systemctl restart nfs-secure.service nfs-secure-server.service

自動掛載配置

[iyunv@desktop30 ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu May  7 11:59:00 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root   /                       xfs     defaults        1 1
UUID=bb4bc6a9-f7da-423d-a332-401d21d8d781 /boot                   xfs     defaul
ts        1 2
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
172.16.30.130:/protected        /mnt/nfssecure  nfs     defaults,v4.2,sec=krb5p
0 0
~  
[iyunv@desktop30 ~]# mount -a
mount.nfs: access denied by server while mounting 172.16.30.130:/protected

//掛載失敗
爲何掛載失敗呢?
由於共享資源那裏給的是rw權限,可是共享資源自己目錄/protected是沒有w權限的,因此還要回服務器爲共享資源目錄自己添加權限
[iyunv@server30 ~]# ll -d /protected/
drwxr-xr-x. 3 root root 20 May 18 18:34 /protected/
[iyunv@server30 ~]# chmod 777 /protected/
[iyunv@server30 ~]# ll -d /protected/
drwxrwxrwx. 3 root root 20 May 18 18:34 /protected/

客戶端再次掛載
[iyunv@desktop30 ~]# mount -a
[iyunv@desktop30 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/rhel-root 5109760 3111836 1997924 61% /
devtmpfs 496096 0 496096 0% /dev
tmpfs 505404 80 505324 1% /dev/shm
tmpfs 505404 7172 498232 2% /run
tmpfs 505404 0 505404 0% /sys/fs/cgroup
/dev/sda1 201388 106036 95352 53% /boot
172.16.30.130:/protected 5109760 3112064 1997696 61% /mnt/nfssecure
如上:掛載成功。

最後,驗證用戶guest2001是否能在/mnt/nfssecure/project下建立文件。
查看本地是否有此用戶
[iyunv@desktop30 ~]# id guest2001
uid=2001(guest2001) gid=2001(guest2001) groups=2001(guest2001)
由於客戶端加入了ldap域,因此獲取到LDAP的用戶。

鏈接guest2001用戶驗證
[iyunv@desktop30 ~]# ssh guest2001@localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is 36:09:b0:56:df:c7:b7:62:5d:66:ea:77:fa:34:64:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
guest2001@localhost's password:
Could not chdir to home directory /rhome/guest2001: No such file or directory
mkdir: cannot create directory ‘/rhome’: Permission denied
-bash-4.2$ cd /mnt/nfssecure/project/
-bash-4.2$ touch abc
-bash-4.2$ ls
Abc
//建立成功,證實有寫權限。
注:

鏈接guest2001時沒有家目錄,若是要讓其有家目錄,要使用autofs掛載此用戶家目錄到本地;
驗證guest2001具備寫權限時,不能直接su到此用戶,由於這樣服務器會在缺省參數all_squash的做用下把其當成nfsnobody用戶。
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息