NFS需要RPC協議的協助。
RPC主要負責認證以及令牌發放。RPC的組件有rpc.mountd rpc.lockd rpc.statd
注意一個問題:
如果在NFS客戶端有個用戶centos(id=1001),它通過NFS協議掛載了一個遠端路徑,centos在NFS目錄中創建了一個文件。當遠端服務器上也有個用戶linux(id=1001)時,那麼linux對NFS路徑下的文件也擁有與centos用戶相同的權限。
還有個一問題:
如果本地有root用戶(nfs客戶端),那麼它就會對nfs路徑做任何事情,這樣就太危險了。NFS有個機制:root_squash,將NFS本地(nfs客戶端)root用戶降級,降級爲nfsnobody。這樣客戶端本地的root就沒有太大的權限了。對於第一個問題,也有一個all_squash機制,將nfs客戶端用戶降級,避免與nfs服務端用戶(有相同UID)擁相同的權限。
NFS程序
圖片.png
NFS服務運行腳本
圖片.png
監聽端口
圖片.png
啓動NFS服務的時候會消耗較長的時間。因爲他要連帶啓動其他服務
圖片.png
通過這個截圖可以發現,沒有nfs的進程,而多了很多RPC的進程,這個是因爲nfs是一個內核級程序,不對應單獨的進程。
NFS的配置文件
nfs的配置文件有兩種寫法:1、/etc/exports 直接編寫該文件 2、/etc/exports.d/xxx.exports
這兩種寫法可以並存
配置文件的目的就是說明有哪些目錄是需要向外共享的
NFS配置文件的格式
/nfs-dir ip(export opt1,opt2) ip(opt1,opt2)
允許掛載的目錄 允許掛載的客戶端IP地址
客戶端可以是指定IP,還可以是IP/PREFIX *代表任意主機
選項
root_squash 壓縮root用戶權限 默認
no_root_squash 不壓縮root用戶權限 危險
all_squash 壓縮所有用戶權限
no_all_squash 不壓縮所有用戶權限
anonuid and anongid 將NFS客戶端映射到本地指定UID和GID
壓縮永不權限主要是防止兩個主機上的用戶ID相同
exportfs
用來維護NFS文件系統,如果NFS配置文件修改了,不能重啓NFS服務。需要使用這個命令來使配置文件生效。
配置NFS
1、添加NFS配置文件內容
圖片.png
2、在沒有exportfs之前的測試
圖片.png
沒有共享路徑
3、exportfs 使NFS配置文件生效
圖片.png
4、再測試exportfs的輸出
圖片.png
5、客戶端掛載NFS
圖片.png
圖片.png
既然已經是rw權限了,爲什麼不能創建文件呢?因爲root_squash是默認選項,它降低了客戶端root用戶的權限。
圖片.png
我臨時在服務端修改下nfs的權限
圖片.png
圖片.png
客戶端就不報錯了
6、使用第二個方式編寫NFS配置文件
圖片.png
後綴一定不能錯。
文件名就是共享路徑的名字
7、更新下共享目錄
圖片.png
8、在客戶端查看共享路徑有沒有增加
圖片.png