假設你已經配置好了一個 NFS 服務器和一個客戶端。如果還沒有,你先需要在服務器上進行初始化配置。(IT外包)
另外,你可能還需要配置 SELinux 和 firewalld 以允許通過 NFS 進行文件共享。
下面的例子假設你的NFS共享目錄在 box2 的 /nfs:
# semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"# restorecon -R /nfs# setsebool -P nfs_export_all_rw on# setsebool -P nfs_export_all_ro on
(其中 -P 標記指示重啟持久有效)。
最后,別忘了:
創建 NFS 組并配置 NFS 共享目錄1、 新建一個名為 nfs 的組并給它添加用戶 nfsnobody,然后更改 /nfs 目錄的權限為 0770,組屬主為 nfs。于是,nfsnobody(對應請求用戶)在共享目錄有寫的權限,你就不需要在 /etc/exports 文件中使用 norootsquash(LCTT 譯注:設為 root_squash 意味著在訪問 NFS 服務器上的文件時,客戶機上的 root 用戶不會被當作 root 用戶來對待)。
# groupadd nfs# usermod -a -G nfs nfsnobody# chmod 0770 /nfs# chgrp nfs /nfs
2、 像下面那樣更改 export 文件(/etc/exports)只允許從 box1 使用 Kerberos 安全驗證的訪問(sec=krb5)。
注意:anongid 的值設置為之前新建的組 nfs 的 GID:
exports – 添加 NFS 共享
/nfs box1(rw,sec=krb5,anongid=1004)
3、 再次 exprot(-r)所有(-a)NFS 共享。為輸出添加詳情(-v)是個好主意,因為它提供了發生錯誤時解決問題的有用信息:
# exportfs -arv
4、 重啟并啟用 NFS 服務器以及相關服務。注意你不需要啟動 nfs-lock 和 nfs-idmapd,因為系統啟動時其它服務會自動啟動它們:
# systemctl restart rpcbind nfs-server nfs-lock nfs-idmap# systemctl enable rpcbind nfs-server(IT運維)
測試環境和其它前提要求在這篇指南中我們使用下面的測試環境:
客戶端機器 [box1: 192.168.0.18]
NFS / Kerberos 服務器 [box2: 192.168.0.20] (也稱為密鑰分發中心,簡稱 KDC)。
注意:Kerberos 服務是至關重要的認證方案。
正如你看到的,為了簡便,NFS 服務器和 KDC 在同一臺機器上,當然如果你有更多可用機器你也可以把它們安裝在不同的機器上。兩臺機器都在 mydomain.com 域。
最后同樣重要的是,Kerberos 要求客戶端和服務器中至少有一個域名解析的基本方式和網絡時間協議服務,因為 Kerberos 身份驗證的安全一部分基于時間戳。
為了配置域名解析,我們在客戶端和服務器中編輯 /etc/hosts 文件:
host 文件 – 為域添加 DNS
192.168.0.18 box1.mydomain.com box1192.168.0.20 box2.mydomain.com box2
在 RHEL 7 中,chrony 是用于 NTP 同步的默認軟件:
# yum install chrony# systemctl start chronyd# systemctl enable chronyd
為了確保 chrony 確實在和時間服務器同步你系統的時間,你可能要輸入下面的命令兩到三次,確保時間偏差盡可能接近 0:
# chronyc tracking
用 Chrony 同步服務器時間安裝和配置 Kerberos要設置 KDC,首先在客戶端和服務器安裝下面的軟件包(客戶端不需要 server 軟件包):
# yum update && yum install krb5-server krb5-workstation pam_krb5
安裝完成后,編輯配置文件(/etc/krb5.conf 和 /var/kerberos/krb5kdc/kadm5.acl),像下面那樣用 mydomain.com 替換所有 example.com。
下一步,確保 Kerberos 能功過防火墻并啟動/啟用相關服務。(IT外包服務)
重要:客戶端也必須啟動和啟用 nfs-secure:
# firewall-cmd --permanent --add-service=kerberos# systemctl start krb5kdc kadmin nfs-secure # systemctl enable krb5kdc kadmin nfs-secure
現在創建 Kerberos 數據庫(請注意這可能會需要一點時間,因為它會和你的系統進行多次交互)。為了加速這個過程,我打開了另一個終端并運行了 ping -f localhost 30 到 45 秒):
# kdb5_util create -s
創建 Kerberos 數據庫下一步,使用 kadmin.local 工具為 root 創建管理權限:
# kadmin.local# addprinc root/admin
添加 Kerberos 服務器到數據庫:
# addprinc -randkey host/box2.mydomain.com
在客戶端(box1)和服務器(box2)上對 NFS 服務同樣操作。請注意下面的截圖中在退出前我忘了在 box1 上進行操作:
# addprinc -randkey nfs/box2.mydomain.com# addprinc -randkey nfs/box1.mydomain.com
輸入 quit 和回車鍵退出:
添加 Kerberos 到 NFS 服務器為 root/admin 獲取和緩存票據授權票據ticket-granting ticket:
# kinit root/admin# klist
緩存 Kerberos真正使用 Kerberos 之前的最后一步是保存被授權使用 Kerberos 身份驗證的規則到一個密鑰表文件(在服務器中):
# kdadmin.local# ktadd host/box2.mydomain.com# ktadd nfs/box2.mydomain.com# ktadd nfs/box1.mydomain.com
最后,掛載共享目錄并進行一個寫測試:
# mount -t nfs4 -o sec=krb5 box2:/nfs /mnt# echo "Hello from Tecmint.com" > /mnt/greeting.txt
掛載 NFS 共享現在讓我們卸載共享,在客戶端中重命名密鑰表文件(模擬它不存在)然后試著再次掛載共享目錄:
# umount /mnt# mv /etc/krb5.keytab /etc/krb5.keytab.orig
掛載/卸載 Kerberos NFS 共享現在你可以使用基于 Kerberos 身份驗證的 NFS 共享了。
艾銻無限是中國領先IT外包服務商,專業為企業提供IT運維外包、電腦維護、網絡維護、網絡布線、辦公設備維護、服務器維護、數據備份恢復、門禁監控、網站建設等多項IT服務外包,服務熱線:400-650-7820 聯系電話:010-62684652 咨詢QQ2050684097;1548853602 地址:北京市海淀區北京科技會展2號樓16D,用心服務每一天,為企業的發展提升更高的效率,創造更大的價值。
更多的IT外包信息盡在艾銻無限http://www.maosdadas.net
相關文章