[轉]RHEL7上配置NFS服務


原文地址:http://380531251.blog.51cto.com/7297595/1659865

1.課程目標

 

  • 了解什么是NFS及其功能;

  • 掌握NFS的配置;

  • 掌握NFS的驗證;

  • 能夠單獨熟練、靈活運用NFS

 

 

 

2.NFS概述

 

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

                                                                                                           

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

 

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

 

NFS依賴RPC與外部通信,為保證NFS服務正常工作,其需要在RPC注冊相應的服務端口信息,這樣客戶端向服務器的RPC提交訪問某個服務的請求時,服務器才能夠正確作出相應。

 

注冊NFS服務時,需要先開啟RPC,才能保證NFS注冊成功。並且如果RPC服務重新啟動,其保存的信息將丟失,需重新啟動NFS服務以注冊端口信息,否則客戶端將無法訪問NFS服務器。

 

 

 

3.NFS主配置文件介紹

 

NFS的主配置文件路徑為:/etc/exports。默認為空,需要手動添加配置參數。

 

主配置文件書寫格式:

共享目錄     [客戶端(參數)]

 

說明:

  • 共享目錄:域共享目錄的實際路徑(要使用絕對路徑)

  • 客戶端:定義客戶端匹配時可以使用FQDNIP地址、網段、DNS區域。客戶端匹配條件表示方法如下:

NFS客戶端匹配

客戶端指定方法

示例

滿足示例的客戶端

IP指定單一主機

客戶端IP地址為(192.168.1.1)

指定網段

客戶端所在網段為192.168.1.0/24

域名單一主機

Nfs.example.com

客戶端FQDNnfs.example.com

域名指定范圍

*.example.com

客戶端FQDNDNS后綴為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.服務的啟動

 

查看服務狀態

[root@server30 ~]# systemctl status nfs-service.service

nfs-server.service - NFS Server

   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled)

   Active: inactive (dead)

缺省沒有啟動,所以要先啟動服務。

 

[root@server30 ~]# systemctl enable nfs-server.service

//開啟下次系統重啟自動加載

ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'

[root@server30 ~]# systemctl  restart  nfs-server.service      

[root@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端設置-----------------------------------------------

[root@server30 ~]# mkdir /public

[root@server30 ~]# ls  -ld  /public

drwxr-xr-x. 2 root root 6 May 18 14:07 /public/

//創建共享目錄

[root@server30 ~]# cd /public/

[root@server30 public]# touch freeit.txt

[root@server30 public]# ls

freeit.txt

//創建一個文件驗證

[root@server30 ~]# vim /etc/exports

/public         172.16.30.130/24(ro,sync)

[root@server30 ~]# systemctl restart nfs-server.service

--------------------------------------------------服務端防火牆允許NFS-------------------------------------

[root@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服務

[root@server30 public]# firewall-cmd --add-service=nfs --permanent

success

[root@server30 public]# firewall-cmd --add-service=rpc-bind  --permanent   

success

[root@server30 public]# firewall-cmd --reload

success

[root@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:

------------------------------------------------客戶端設置--------------------------------------------------------
[root@desktop30 ~]# mkdir /public

[root@desktop30 ~]# mount -t nfs 172.16.30.130:/public /public/

[root@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

[root@desktop30 ~]# cd /public/

[root@desktop30 public]# ls

freeit.txt

[root@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文件

[root@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配置,改rorw,讓共享出去的文件對訪問者可寫

[root@server30 ~]# vim /etc/exports

/public         172.16.30.30/24(rw,sync)

 

重啟服務

[root@server30 ~]# systemctl restart nfs-server.service

 

Samba一樣,共享出去的目錄在配置文件中設置可寫之外,服務器端的本地文件也要給其可寫權限,否則即使配置文件中給了可寫參數,客戶端掛載之后仍然沒有寫權限,二者是缺一不可的,所以,下面的配置就是要給服務端的本地共享出去的文件寫權限,為方便起見,直接給其777的權限

[root@server30 ~]# chmod  777 /public

[root@server30 ~]# ls -ld /public

drwxrwxrwx. 2 root root 23 May 18 14:12 /public

 

接下來客戶端掛載驗證

[root@desktop30 ~]# mount -t nfs 172.16.30.130:/public /public/

[root@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

[root@desktop30 ~]# cd /public/

[root@desktop30 public]# ls

freeit.txt

[root@desktop30 public]# touch gyh.txt

[root@desktop30 public]# ls

freeit.txt  gyh.txt

//創建成功,此時具有寫權限。

 

 

4.4.用戶訪問權限

 

同為文件共享服務,NFS對訪問用戶的控制沒有Samba的功能強大,但是基本也可滿足日常工作對NFS的需要。NFS中,與訪問用戶的控制相關的參數主要有:root_squashno_root_squashall_squashanonuidanongid。下面看幾個例子(本部分實驗仍然用上部分的實驗環境)

 

 

1:查看客戶端登錄時服務器缺省映射為那個用戶

[root@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

 

 

2no_root_squash參數:客戶端以本地root身份登錄服務器時,也擁有root用戶權限

[root@server30 ~]# vim /etc/exports

/public         172.16.30.30/24(rw,no_root_squash,sync)

~                                                                

[root@server30 ~]# systemctl restart nfs-server.service

如上,客戶端以本地root用戶登錄時,服務器在此參數的作用下把其映射為服務器端的root用戶。

 

3anonuid&anongid參數:不論客戶端以什么身份登錄,缺省都映射為指定用戶的UID和指定組的GID

-------------------------------------------------服務器端設置----------------------------------------------

[root@server30 ~]# id user1

uid=1001(user1) gid=1001(user1) groups=1001(user1)

[root@server30 ~]# vim /etc/exports

/public         172.16.30.30/24(rw,anonuid=1001,anongid=1001,sync)

[root@server30 ~]# systemctl restart nfs-server.service

-------------------------------------------------客戶端驗證------------------------------------------------

[root@desktop30 public]# touch 456.txt

[root@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.NFSkerberos驗證

 

本部分以題目的形式來實驗。

 

題目:

  • 第一部分:主要為server端配置

  • Server30上配置NFS,以讀寫的方式共享/protected,能被example.com內用戶訪問;

  • 訪問/protected需要通過kerberos安全加密,可以使用此鏈接密鑰:http://ldap.example.com/pub/server30.keytea;

  • 目錄/protected應該包含名為project擁有人為guest2001的子目錄且用戶guest2001能以讀寫方式訪問/protected/project

 

  • 第二部分:主要為客戶端配置

  • desktop30上掛載來自於server30nfs共享,/protected掛載在目錄/mnt/nfssecure,並使用安全的方式,密鑰鏈接為:http://ldap.example.com/pub/desktop30.keytab;

  • 掛載為啟動時自動掛載;

  • 用戶guest2001能在/mnt/nfssecure/project上創建文件。

 

 

第一部分:server端的配置

 

主配置文件添加共享資源

[root@server30 ~]# vim /etc/exports

/public         172.16.30.30/24(rw,anonuid=1001,anongid=1001)

/protected      172.16.30.0/24(rw,sec=krb5p)

~                                                            

[root@server30 ~]# mkdir /protected

//創建共享目錄

 

 

配置kerberos驗證,需要添加服務器到ldap域中,使用kerberos服務器驗證。kerberos驗證也需要安裝幾個工具,然后做添加到LDAP的操作。如下:

[root@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

[root@server30 ~]# authconfig-gtk

//此命令打開驗證配置界面,如下:

 wKiom1V1qfHRjx4aAAF41ozhNnA650.jpg

選擇[identity*authentication],進行身份驗證配置

選擇【ldap】,加入到ldap域進行驗證

填寫ldapDN

填寫ldap的路徑,要以ldap開頭,//后面為ldap服務器的主機名

此處要勾選

點擊此處,彈出如下界面,填寫證書的密鑰鏈接,下載證書

 

wKioL1V1q8HjU80KAAGOx6xnPJs886.jpg

填寫鏈接:http://ldap.example.com/pub/EXAMPLE-CA.crt

點擊【ok】完成證書鏈設置

wKiom1V1qh_wxF-MAAGMcTAREDs248.jpg

根據題目要求,這里要選擇kerberos驗證方式

填寫認證服務的kerberos Realm()

此處的勾選要去掉,否則不能進行下一步操作

填寫認證服務的kerberos KDC

填寫認證服務的kerberos Admin Server

點擊【Apply】完成認證配置

 

 

NFS的版本有許多,Redhat Linux7中的NFS使用版本為4.2kerberos驗證為其特有的驗證方式,所以要指明NFS版本,在/etc/sysconfig/nfs配置文件中添加:

[root@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服務器,如下:

[root@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

……

 

[root@server30 ~]# systemctl restart chronyd.service

如上,將原有的第456行注釋掉,然后添加第7行內容,指定NTP服務器。最后不要忘記重啟chronyd.service服務。

 

 

下載用於kerberos驗證的密鑰

[root@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]

 

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

/etc/krb5.keytab

 

 

根據題目要求,在共享資源下創建project目錄,並設置guest2001為其擁有者

[root@server30 ~]# mkdir /protected/project

[root@server30 ~]# id guest2001

uid=2001(guest2001) gid=2001(guest2001) groups=2001(guest2001)

[root@server30 ~]# chown guest2001 /protected/project/

[root@server30 ~]# ll /protected/

total 0

drwxr-xr-x. 2 guest2001 root 6 May 18 18:34 project

注:guest2001是加入ldap域后獲取的用戶,默認本地沒有。

 

最后,對於服務的重啟,不僅要重啟nfs服務,同時也要重啟nfs的另外兩個用於安全驗證的服務,如下:

[root@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'

[root@server30 ~]# systemctl restart  nfs-server.service nfs-secure-server.service  nfs-secure.service      

 

[root@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

[root@desktop30 ~]# mkdir /mnt/nfssecure

[root@desktop30 ~]# ls /mnt/

nfssecure

 

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

 

然后指定NTP服務器,同步時間

[root@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

 

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

 

 

下載密鑰

[root@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]

 

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

/etc/krb5.keytab

 

同樣,客戶端也需要啟動nfs的安全驗證服務

[root@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'

[root@desktop30 ~]# systemctl restart nfs-secure.service nfs-secure-server.service

 

 

自動掛載配置

[root@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

[root@desktop30 ~]# mount -a

mount.nfs: access denied by server while mounting 172.16.30.130:/protected

//掛載失敗              

為什么掛載失敗呢?

因為共享資源那里給的是rw權限,但是共享資源本身目錄/protected是沒有w權限的,所以還要回服務器為共享資源目錄本身添加權限

[root@server30 ~]# ll -d /protected/

drwxr-xr-x. 3 root root 20 May 18 18:34 /protected/

[root@server30 ~]# chmod 777 /protected/

[root@server30 ~]# ll -d /protected/   

drwxrwxrwx. 3 root root 20 May 18 18:34 /protected/

 

客戶端再次掛載

[root@desktop30 ~]# mount -a

[root@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下創建文件。

查看本地是否有此用戶

[root@desktop30 ~]# id guest2001

uid=2001(guest2001) gid=2001(guest2001) groups=2001(guest2001)

因為客戶端加入了ldap域,所以獲取到LDAP的用戶。

 

連接guest2001用戶驗證

[root@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用戶。

 

 


本文出自 “我就是天使” 博客,請務必保留此出處http://380531251.blog.51cto.com/7297595/1659865


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM