原文地址: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。默認為空,需要手動添加配置參數。
主配置文件書寫格式:
共享目錄 [客戶端(參數)] |
說明:
-
共享目錄:域共享目錄的實際路徑(要使用絕對路徑);
-
客戶端:定義客戶端匹配時可以使用FQDN、IP地址、網段、DNS區域。客戶端匹配條件表示方法如下:
NFS客戶端匹配
客戶端指定方法 |
示例 |
滿足示例的客戶端 |
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.服務的啟動
查看服務狀態
[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 ~]# 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配置,改ro為rw,讓共享出去的文件對訪問者可寫
[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_squash、no_root_squash、all_squash、anonuid、anongid。下面看幾個例子(本部分實驗仍然用上部分的實驗環境):
例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。
例2:no_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用戶。
例3:anonuid&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.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端的配置
主配置文件添加共享資源
[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 //此命令打開驗證配置界面,如下: |
①選擇[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配置文件中添加:
[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 |
如上,將原有的第4、5、6行注釋掉,然后添加第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