nfs

NFS (Network Filesystem)

         NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件.

          它是一种集群式文件系统,类似于gfs(global file system ),ocfs(oracle cluster file system)等。它不同单机文件系统(如fat32,ntfs,ext2,ext3,ext4等)

NFS好处:

1.本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。

2.用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS服务器上并且在网络上处处可用。

.诸如软驱,CDROM,和 Zip(是指一种高储存密度的磁盘驱动器与磁盘)之类的存储设备可以在网络上面被别的机器使用。这可以减少整个网络上的可移动介质设备的数量

 NFS 的檔案存取權限

不知道你有沒有想過這個問題,在圖 13.1-1 的環境下,假如我在 NFS client 1 上面以 dmtsai 這個使用者身份想要去存取 /home/data/sharefile/ 這個來自 NFS server 所提供的檔案系統時, 請問 NFS server 所提供的檔案系統會讓我以什麼身份去存取?是 dmtsai 還是?

為什麼會這麼問呢?這是因為 NFS 本身的服務並沒有進行身份登入的識別, 所以說,當你在用戶端以 dmtsai 的身份想要存取伺服器端的檔案系統時, 伺服器端會以用戶端的使用者 UID 與 GID 等身份來嘗試讀取伺服器端的檔案系統。這時有個有趣的問題就產生啦! 那就是如果用戶端與伺服器端的使用者身份並不一致怎麼辦? 我們以底下這個圖示來說明一下好了:

NFS 的伺服器端與用戶端的使用者身份確認機制
圖 13.1-3、NFS 的伺服器端與用戶端的使用者身份確認機制

當我以 dmtsai 這個一般身份使用者要去存取來自伺服器端的檔案時,你要先注意到的是: 檔案系統的 inode 所記錄的屬性為 UID, GID 而非帳號與群組名。 那一般 Linux 主機會主動的以自己的 /etc/passwd, /etc/group 來查詢對應的使用者、群組名稱。 所以當 dmtsai 進入到該目錄後,會參照 NFS client 1 的使用者與群組名稱。 但是由於該目錄的檔案主要來自 NFS server ,所以可能就會發現幾個情況:

  • NFS server/NFS client 剛好有相同的帳號與群組
    則此時使用者可以直接以 dmtsai 的身份進行伺服器所提供的檔案系統之存取。

  • NFS server 的 501 這個 UID 帳號對應為 vbird
    若 NFS 伺服器上的 /etc/passwd 裡面 UID 501 的使用者名稱為 vbird 時, 則用戶端的 dmtsai 可以存取伺服器端的 vbird 這個使用者的檔案喔!只因為兩者具有相同的 UID 而已。這就造成很大的問題了!因為沒有人可以保證用戶端的 UID 所對應的帳號會與伺服器端相同, 那伺服器所提供的資料不就可能會被錯誤的使用者亂改?

  • NFS server 並沒有 501 這個 UID
    另一個極端的情況是,在伺服器端並沒有 501 這個 UID 的存在,則此時 dmtsai 的身份在該目錄下會被壓縮成匿名者, 一般 NFS 的匿名者會以 UID 為 65534 為其使用者,早期的 Linux distributions 這個 65534 的帳號名稱通常是 nobody ,我們的 CentOS 則取名為 nfsnobody 。但有時也會有特殊的情況,例如在伺服器端分享 /tmp 的情況下, dmtsain 的身份還是會保持 501 但建立的各項資料在伺服器端來看,就會屬於無擁有者的資料。

  • 如果使用者身份是 root 時
    有個比較特殊的使用者,那就是每個 Linux 主機都有的 UID 為 0 的 root 。 想一想,如果用戶端可以用 root 的身份去存取伺服器端的檔案系統時,那伺服器端的資料哪有什麼保護性? 所以在預設的情況下, root 的身份會被主動的壓縮成為匿名者

總之,用戶端使用者能做的事情是與 UID 及其 GID 有關的,那當用戶端與伺服器端的 UID 及帳號的對應不一致時, 可能就會造成檔案系統使用上的困擾,這個就是 NFS 檔案系統在使用上面的一個很重要的地方! 而在瞭解使用者帳號與 UID 及檔案系統的關係之後,要實際在用戶端以 NFS 取用伺服器端的檔案系統時, 你還得需要具有:

  • NFS 伺服器有開放可寫入的權限 (與 /etc/exports 設定有關);
  • 實際的檔案權限具有可寫入 (w) 的權限。

當你滿足了 (1)使用者帳號,亦即 UID 的相關身份; (2)NFS 伺服器允許有寫入的權限; (3)檔案系統確實具有 w 的權限時,你才具有該檔案的可寫入權限喔! 尤其是身份 (UID) 確認的環節部分,最容易搞錯啦!也因為如此, 所以 NFS 通常需要與 這一個可以確認用戶端與伺服器端身份一致的服務搭配使用,以避免身份的錯亂啊! ^_^                ————————来自鸟哥私房菜

Nfs服务器的配置,配置文件/etc/exports

Exports文件中一些选项的含义

选项 说明

Ro  只有读的权限

Rw  读写的权限

Root_squash 客户机用root用户访问该共享文件夹时,将被压缩成匿名用户

No_root_squash 客户机用root访问该共享文件夹时,具有NFS-SERVER服务器root的身份权限

All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

Anonuid 将客户机上的用户映射成指定的本地用户ID的用户

Anongid 将客户机上的用户映射成属于指定的本地用户组ID

Sync 资料同步写入到内存与硬盘中

Async 资料会先暂存于内存中,而非直接写入硬盘

Insecure 允许从这台机器过来的非授权访问

格式

/etc/exportx

/test    10.1.1.11(ro)  10.1.1.12(rw)  ---- 分别为要共享的目录   10.1.1.11 可以写成网段的形式 10.1.1.0/24 或者10.1.1.0/255.255.255.0 ,*代表所有都开放,可以学这样写 /test    10.1.1.11(ro)  10.1.1.12(rw) 进行累加

/tmp *(rw,all_squash,anonuid=501,anongid=501) 这条的意思就是客户机上所有用户访问都会映射成本机501的用户。

end ! 谢谢 如有错误欢迎留言!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值