- 安裝 nfs-utils 套件。
[root@kvm5 ~]# yum install -y nfs-utils
- 建立 NFS 分享目錄。
[root@kvm5 ~]# mkdir /public /protected
- 修改 NFS 分享目錄的 SELinux 檔案 context。
[root@kvm5 ~]# semanage fcontext -a -t public_content_t "/public(/.*)?"
[root@kvm5 ~]# semanage fcontext -a -t public_content_t "/protected(/.*)?"
[root@kvm5 ~]# restorecon -Rv /public /protected
- 考試時不用自行產生 kerberos keytab,只要依照指定的位置下載,存放在目錄 /etc/ 下,且檔名必須為 krb5.keytab。
[root@kvm5 ~]# wget http://deyu.wang/kvm5.keytab -O /etc/krb5.keytab
- kerberos keytab 的驗證跟時間有關,server 與 client 都必須校時。
[root@kvm5 ~]# date
Sun Jan 7 14:50:04 CST 2018
[root@kvm5 ~]# chronyc -a makestep
200 OK
200 OK
[root@kvm5 ~]# date
Mon Nov 20 15:53:22 CST 2017
- 在 /protected 下建立次目錄 restricted,並將其擁有者設定為 deyu3,讓 deyu3 可以寫入資料。
[root@kvm5 ~]# mkdir -p /protected/restricted
[root@kvm5 ~]# chown deyu3 /protected/restricted
- 編輯設定檔 /etc/exports,分享 /protected 及 /public 兩個目錄給網域 192.168.122.0/24。
[root@kvm5 ~]# echo '/protected 192.168.122.0/24(rw,sync,sec=krb5p)' > /etc/exports
[root@kvm5 ~]# echo '/public 192.168.122.0/24(ro,sync)' >> /etc/exports
[root@kvm5 ~]# vim /etc/exports
[root@kvm5 ~]# cat /etc/exports
/protected 192.168.122.0/24(rw,sync,sec=krb5p)
/public 192.168.122.0/24(ro,sync)
- NFS 掛載參數說明如下,詳細說明請參考 man 5 nfs 手冊。
- rw:read-write,可讀寫的權限;
- ro:read-only,唯讀的權限;
- sec=mode:安全認證模式;
- sec=sys 預設,使用本地 UNIX UIDs 及 GIDs 進行身份認證。
- sec=krb5 使用 Kerberos V5 取代本地 UNIX UIDs 及 GIDs 進行身份認證。
- sec=krb5i 使用 Kerberos V5 進行身份認證,資料完整性檢查,以防止數據被篡改。
- sec=krb5p 使用 Kerberos V5 進行身份認證,資料完整性檢查及 NFS 傳輸加密,以防止數據被篡改,這是最安全的方式。
- sync:資料同步寫入到記憶體與硬碟當中;
[root@kvm5 ~]# man 5 nfs
- 設定使用 4.2 版本,以匯出分享 SELinux context。無適合的版本 client 端掛載時會出現 mount.nfs: Protocol not supported 的訊息。
[root@kvm5 ~]# vim /etc/sysconfig/nfs sed -i 's/^\(RPCNFSDARGS=\).*$/\1\"-V 4.2\"/' /etc/sysconfig/nfs
[root@kvm5 ~]# grep ^RPCNFSDARGS /etc/sysconfig/nfs RPCNFSDARGS="-V 4.2"
- 設定開機啟動 nfs 服務,NFS server 端的服務為 nfs-server 及 nfs-secure-server,本版本只要啟動 nfs-server 就同時啟動 nfs-secure-server,而且使用 tab 鍵也不會出現 nfs-secure-server 服務,但有些版本則是兩者分開,必須確認是不是兩種服務都啟動。
[root@kvm5 ~]# systemctl enable nfs-server.service nfs-secure-server.service
- 啟動 nfs 服務
[root@kvm5 ~]# systemctl start nfs-server.service nfs-secure-server.service
- 查看目前啟動的 nfs 版本,因 server 指定使用 4.2,若出現 -4.2 表示 nfs server 沒有成功啟動。
[root@kvm5 ~]# cat /proc/fs/nfsd/versions -2 +3 +4 +4.1 +4.2
- 要確定 nfs-secure-server nfs-server 服務都正常運作。
[root@kvm5 ~]# systemctl status nfs-secure-server.service nfs-server.service
nfs-secure-server.service - Secure NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-secure-server.service; enabled)
Active: active (running) since Mon 2015-09-21 20:04:10 CST; 8s ago
Process: 3075 ExecStart=/usr/sbin/rpc.svcgssd $RPCSVCGSSDARGS (code=exited, status=0/SUCCESS)
Main PID: 3077 (rpc.svcgssd)
CGroup: /system.slice/nfs-secure-server.service
└─3077 /usr/sbin/rpc.svcgssd
Sep 21 20:04:10 kvm5.deyu.wang systemd[1]: Starting Secure NFS Server
Sep 21 20:04:10 kvm5.deyu.wang systemd[1]: Started Secure NFS Server.
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled)
Active: active (exited) since Mon 2015-09-21 20:04:10 CST; 8s ago
Process: 3078 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 3076 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 3087 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT (code=exited, status=0/SUCCESS)
Process: 3084 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 3083 ExecStartPre=/usr/libexec/nfs-utils/scripts/nfs-server.preconfig (code=exited, status=0/SUCCESS)
Main PID: 3087 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Sep 21 20:04:10 kvm5.deyu.wang systemd[1]: Starting NFS Server
Sep 21 20:04:10 kvm5.deyu.wang systemd[1]: Started NFS Server.
- 建議不論是否 TAB 有沒有出現提示,都同時啟動這兩個服務。CentOS 安裝版本
nfs-utils-1.3.0-8.el7.x86_64
啟動 nfs-secure-server 出現錯誤訊息,請執行 yum downgrade nfs-utils 換成 nfs-utils-1.3.0-0.el7.x86_64
套件。[root@kvm5 ~]# rpm -qa | grep nfs-utils
nfs-utils-1.3.0-8.el7.x86_64
[root@kvm5 ~]# yum downgrade nfs-utils -y
[root@kvm5 ~]# rpm -qa | grep nfs-utils
nfs-utils-1.3.0-0.el7.x86_64
- 再重新啟動 nfs 服務,並查看是否正常運作。
[root@kvm5 ~]# systemctl restart nfs-server.service nfs-secure-server.service
- 輸出所有設定的 nfs 分享目錄。
[root@kvm5 ~]# exportfs -arv
exporting 192.168.122.0/24:/public
exporting 192.168.122.0/24:/protected