nfs,是network file system的簡寫,即網路檔案系統。網路檔案系統是freebsd支援的檔案系統中的一種,也被稱為nfs. nfs允許一個系統在網路上與他人共用目錄和檔案。透過使用nfs,使用者和程式可以像存取本機檔案一樣存取遠端系統上的檔案。
nfs基於rpc協議,nfs本身只是起到共享的作用而和客戶端進行連接和資料傳輸則是rpc協議的功能
nfs主要透過兩個daemon 來進行控制:
1.rpc.nfsd ------- 它用來控制客戶端是否可以連接到,nfs server
2.rpc.mountd----它用來控制客戶端連接後是否有權限對檔案進行操作,主要是依據/etc/exports檔案的設定
啟用nfs需要啟用portmap 和nfs-utils
1.portmap主要用來控制客戶端連線時請求的埠
2.nfs-utils 是rpc.nfsd、rpc.mountd 的執行文件
/etc/exports nfs服務的管理指令
/usr/sbin/showmount 客戶端的檢視指令
/var/lib/nfs/xtab #/etc/exports檔案設定格式
【分享的目錄】 ip或主機(參數1.參數2) ip或主機(參數3,參數4)
rw:讀寫
ro:只讀
no_root_squash:客戶端登陸者如果為root,則登入共用目錄後具有root權限
root_squash:root登入後身分被壓縮為nfsnobody(預設)
all_squash:所有使用者登入後身分被壓縮為nfsnobody(預設下)
anonuid:如不想讓使用者登入後被壓縮為nfsnobody使用者可以更改此項目
anongid:同上(這個是群組)
sync:資料同步寫入硬碟
async:資料先儲存到記憶體
關於權限的分析
1.客戶端連線時候,對一般使用者的檢查,no.1如果明確設定了一般使用者被壓縮的身份,那麼此時客戶端用戶的身份轉換為指定用戶,no.2如果nfs server上面有同名用戶,那麼此時客戶端登錄帳戶的身份轉換為nfs server上面的同名用戶,no.3如果沒有明確指定,也沒有同名用戶,那麼此時用戶身分被壓縮成nfsnobody2.客戶端連線的時候,對root的檢查,no.1如果設定no_root_squash,那麼此時root用戶的身分被壓縮為nfs server上面的root,no.2如果設定了all_squash、anonuid、anongid,此時root 身分被壓縮為指定用戶,no.3如果沒有明確指定,此時root用戶被壓縮為nfsnobody,no.4如果同時指定no_root_squash與all_squash 使用者將被壓縮為nfsnobody,如果設定了anonuid、anongid將被壓縮到所指定的使用者與群組
##啟動服務
service nfs start or /etc/rc.d/init.d/nfs start
#exportfs 指令用法
##- a 全部掛載或卸載
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports檔案中的目錄)-v 在螢幕輸出詳細資訊
showmount 命令用法
-a 顯示已經於客戶端連接上的目錄資訊
利用netstat可以查看出nfs服務開啟了許多連接埠其中nfs開啟的是2049 portmap 開啟的是111,其餘則是rpc開啟的
利用rpcinfo -p 可以查看出rpc開啟的連接埠所提供的程式有哪些使用mount -t nfs ip(hostname):共享目錄 掛載點方式,可以完成掛載
最後注意兩點,雖然透過權限設定可以讓普通用戶訪問,但是掛載的時候只默認情況下只有root可以去掛載(普通用戶可以執行sudo)
nfs server 關機的時候一點要確保nfs服務關閉,沒有客戶端處於連線狀態! !透過showmount -a 可以查看,如果有的話用kill killall pkill 來結束,(-9 強制結束)
以上是linux NFS是什麼及怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!