天天看點

全面分析RHCE7(紅帽認證工程師)考試題目之 ----NFS檔案共享 篇

配置NFS共享(Linux與Linux之間)

Network Flie System 網絡檔案系統

 協定:NFS(TCP/UDP 2049),RPC(TCP/UDP 111)

所需軟體包:nfs-utils (預設會裝)

系統服務:nfs-server

搭建基本隻讀NFS服務

1.檢測是否裝包

[root@server0 ~]# rpm -q nfs-utils

nfs-utils-1.3.0-0.el7.x86_64

2.修改配置檔案 /etc/exports

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

 ...

  /public 172.25.0.0/24(ro)

[root@server0 ~]# mkdir /public

[root@server0 ~]# echo public test > /public/nsd.txt

3.重新開機nfs-server服務,設定開機自啟

  [root@server0 ~]# systemctl restart nfs-server

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

4.用戶端 通路nfs-server服務

[root@desktop0 ~]# showmount -e 172.25.0.11

 Export list for 172.25.0.11:

 /public 172.25.0.0/24

[root@desktop0 ~]# mkdir /mnt/nfs

[root@desktop0 ~]# vim /etc/fstab 

  172.25.0.11:/public /mnt/nfs nfs _netdev 0 0

[root@desktop0 ~]# mount -a

[root@desktop0 ~]# df -h

 檔案系統              容量  已用  可用 已用% 挂載點

 /dev/vda1              10G  3.1G  7.0G   31% /

 devtmpfs              906M     0  906M    0% /dev

 tmpfs                 921M   80K  921M    1% /dev/shm

 tmpfs                 921M   17M  904M    2% /run

 tmpfs                 921M     0  921M    0% /sys/fs/cgroup

 172.25.0.11:/public    10G  3.1G  7.0G   31% /mnt/nfs

[root@desktop0 ~]# ls /mnt/nfs/

 nsd.txt

搭建root使用者的讀寫NFS

[root@server0 ~]# mkdir /abc

[root@server0 ~]# echo 123 > /abc/a.txt

...

/abc 172.25.0.0/24(rw)

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

172.25.0.11:/abc /mnt/test nfs _netdev 0 0

檔案系統              容量  已用  可用 已用% 挂載點

/dev/vda1              10G  3.1G  7.0G   31% /

devtmpfs              906M     0  906M    0% /dev

tmpfs                 921M   80K  921M    1% /dev/shm

tmpfs                 921M   17M  904M    2% /run

tmpfs                 921M     0  921M    0% /sys/fs/cgroup

//172.25.0.11/common   10G  3.1G  7.0G   31% /mnt/samba

//172.25.0.11/devops   10G  3.1G  7.0G   31% /mnt/dev

172.25.0.11:/abc       10G  3.1G  7.0G   31% /mnt/test

[root@desktop0 test]# touch 123.txt

touch: 無法建立"123.txt": 權限不夠

第一種

/abc 172.25.0.0/24(rw,no_root_squash)  #no_root_squash 不壓榨用戶端root的權限

[root@server0 ~]# systemctl restart nfs

[root@desktop0 test]# systemctl restart nfs#重新開機用戶端服務

[root@desktop0 test]# ls /mnt/test/

123.txt  a.txt

第二種 提權方法

[root@server0 ~]# setfacl -m u:nfsnobody:rwx /abc

[root@server0 ~]# getfacl /abc

getfacl: Removing leading '/' from absolute path names

# file: abc

# owner: root

# group: root

user::rwx

user:nfsnobody:rwx

group::r-x

mask::rwx

other::r-x

普通使用者

用戶端普通使用者通路伺服器端nfs-server服務,服務端會以用戶端相同UID身份的本地使用者進行權限判定

[root@server0 ~]# useradd -u 1666 test01

[root@server0 ~]# setfacl -m u:test01:rwx /abc

[root@desktop0 ~]# useradd -u 1666 li 

[root@desktop0 ~]# su - li

[li@desktop0 ~]$ cd /mnt/test/

[li@desktop0 test]$ touch 10.txt

[li@desktop0 test]$ ls

10.txt  123.txt  1.txt  3.txt  a.txt

安全NFS服務

LDAP : 網絡使用者,提供使用者名

kerberos:密碼驗證

1.服務端修改配置檔案,建立讀寫的共享

[root@server0 ~]# mkdir /protected

/protected *(rw,sec=krb5p)

2.服務端和用戶端部署加密密鑰    這裡是使用在網上下載下傳的密鑰

[root@server0 ~]# wget http://172.25.254.254/pub/keytabs/server0.keytab -O /etc/krb5.keytab

[root@desktop0 ~]# wget http://172.25.254.254/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab

3.服務端 nfs-server nfs-secure-server 重新開機

[root@server0 ~]# systemctl restart nfs-server nfs-secure-server

[root@server0 ~]# systemctl enable nfs-server nfs-secure-server

4.保證ldapuser0使用者有寫權限,設定本地權限

[root@server0 ~]# chown ldapuser0 /test  #備用

[root@server0 ~]# setfacl -m u:ldapuser0:rwx /protected

5.用戶端通路與挂載

Export list for 172.25.0.11:

/test *

172.25.0.11:/protected /mnt/nfs nfs _netdev,sec=krb5p 0 0

6.重新開機相關服務

[root@desktop0 ~]# systemctl restart nfs nfs-secure

7.驗證挂載

檔案系統           容量  已用   可用    已用% 挂載點

/dev/vda1         10G  3.1G  7.0G   31% /

devtmpfs           906M     0  906M    0% /dev

tmpfs             921M   80K  921M    1% /dev/shm

tmpfs              921M   17M  904M    2% /run

tmpfs             921M     0  921M    0% /sys/fs/cgroup

172.25.0.11:/protected  10G   3.1G  6.9G   31% /mnt/nfs

8.驗證寫入

[root@desktop0 ~]# ssh [email protected]

[email protected]'s password: kerberos

[ldapuser0@desktop0 ~]$ cd /mnt/nfs/

[ldapuser0@desktop0 nfs]$ touch 1.txt

[ldapuser0@desktop0 nfs]$ ls

1.txt

在RHCE7的考試中有兩道題是關于nfs的:

配置NFS共享服務

        在 server0 配置 NFS 服務,要求如下:

        以隻讀的方式共享目錄 /public,隻能被 example.com 域中的系統通路

        以讀寫的方式共享目錄 /protected,隻能被 example.com 域中的系統通路

        通路 /protected 需要通過 Kerberos 安全加密,您可以使用下面 URL 提供的密鑰:http://classroom.example.com/pub/keytabs/server0.keytab

        目錄 /protected 應該包含名為 project 擁有人為 ldapuser0 的子目錄

        使用者 ldapuser0 能以讀寫方式通路 /protected/project

        [root@system1 ~]#mkdir -p /public /protected/project

        [root@system1 ~]#chown ldapuser0 /protected/project/

        [root@system1 ~]#wget -O /etc/krb5.keytab http://classroom/pub/keytabs/server0.keytab

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

        /public172.25.0.0/24(ro)

        /protected172.25.0.0/24(rw,sec=krb5p)

        [root@system1 ~]#systemctl start nfs-secure-server nfs-server

        [root@system1 ~]#systemctl enable nfs-secure-server nfs-server

挂載NFS共享

        在 desktop0 上挂載一個來自 server0.example.com 的共享,并符合下列要求:

        /public 挂載在下面的目錄上 /mnt/nfsmount

        /protected 挂載在下面的目錄上 /mnt/nfssecure 并使用安全的方式,密鑰下載下傳 URL:http://classroom.example.com/pub/keytabs/desktop0.keytab

        使用者 ldapuser0 能夠在/mnt/nfssecure/project 上建立檔案

        這些檔案系統在系統啟動時自動挂載

        [root@system2 ~]#mkdir -p /mnt/nfsmount /mnt/nfssecure

        [root@system2 ~]#wget -O /etc/krb5.keytab http://classroom/pub/keytabs/desktop0.keytab

        [root@system2 ~]#systemctl start nfs-secure

        [root@system2 ~]#systemctl enable nfs-secure

        [root@system2 ~]#showmount -e server0

        [root@system2 ~]#vim /etc/fstab

        server0.example.com:/public     /mnt/nfsmount   nfs     _netdev         0 0

        server0.example.com:/protected  /mnt/nfssecure  nfs     sec=krb5p,_netdev       0 0

        [root@system2 ~]#mount -a 

        [root@system2 ~]#ssh ldapuser0@system2

        經常遇見的問題:

        # mount  -a

        .... Permission Denied。

        可能的原因:

        1)服務端的 /etc/exports配置沒有給權限(比如忘記寫掩碼長度)

        2)服務端的 nfs-secure-server 服務沒開啟

        3)用戶端的 nfs-secure 服務沒開啟

        4)密鑰部署的名稱不對、内容不對

本文轉自 Xuenqlve 51CTO部落格,原文連結:http://blog.51cto.com/13558754/2058748,如需轉載請自行聯系原作者

繼續閱讀