1.NFS概念
網絡文件系統(NFS)是Unix系統和網絡附加存儲文件管理器常用的網絡文件系統,允許多個客戶端通過網絡共享文件訪問。它可用於提供對共享二進制目錄的訪問,也可用於允許用戶在同一工作組中從不同客戶端訪問其文件。NFS協議有多個版本:Linux支持版本4、版本3和版本2, 而大多數系統管理員熟悉的是NFSv3。默認情況下,該協議並不安全,但是更新的版本(如NFSv4)提供了對更安全的身份驗證的支持,甚至可以通過kerberos進行加密。
2. NFS服務器配置
若要配置基本NFS服務器,您應該安裝nfs-utils軟件包。然後,您應該編輯/etc/exports以列出您希望通過網絡與客戶端系統共享的文件系統,並指出哪些客戶端對導出具有何種訪問權限。例如:
/var/ftp/pub
192.168.0.0/24(ro,sync)
將目錄/var/ftp/pub導出至192.168.0.0/24網絡上的所有主機(對目錄具有隻讀權限)。
/export/homes *.example.com(rw,sync)
將目錄/export/homes導出至exmaple.com中的所有主機(對目錄具有讀寫權限)。
當NFS服務器運行時,每次您編輯/etc/exports後,都應通過在保存更改後執行exportfs -r來確保應用這些更改。您可以使用exportfs -v顯示所有導出。
NFSv4還導出pseudo-root(所有導出的文件系統的root)。如果客戶端掛載nfs-server:/ ,這將在NFS
服務器上的/下面相對於其位置掛載所有導出文件系統。這對於瀏覽從客戶端的服務器導出的所有文件系統有用。您仍可單獨掛載文件系統。
默認情況下,NFS服務器將NFS客戶端上的root視爲用戶nfsnobody。即,如果root嘗試訪問掛載的導出中的文件,服務器會將其視作用戶nfsnobody訪問。在NFS導出被無磁盤客戶端用作/和root需要被視作root的情況中,這種安全措施存在隱患。若要禁用此保護,服務器需要將no_root_squash添加到在/etc/exports中導出設置的選項列表:
/exports/root
192.168.0.1(rw,no_root_squash)
對於NFSv4,必須在服務器上打開端口2049/TCP(對於nfsd)。對於NFSv3和更早版本,必須爲rpcbind、rpc.mountd、lockd和rpc.rquotad打開更多端口,而在“隨機”選擇的端口上啓動其中許多服務這一事實又增加了複雜性。此外,NFSv2和NFSv3支持UDP傳輸,還要求打開相應的端口
3.配置實驗
1. 服務器端啓動NFS服務:
nfs服務系統自帶有,不用安裝,只需要啓動即可。
# systemctl start nfs-server ; systemctl enable nfs-server
2. 編輯/etc/exports。例如:
[root@server1 ~]# vim /etc/exports
/mnt *(ro)
[root@server1 ~]# exportfs -rv
exporting *:/mnt
3. 從客戶端查看並掛載NFS pseudo-root共享:
[root@server2 ~]# showmount -e 172.25.254.1
Export list for 172.25.254.1:
/mnt *
[root@server2 ~]# mount 172.25.254.1:/mnt /mnt
[root@server2 ~]# cd /mnt/
[root@server2 mnt]# touch file
touch: cannot touch ‘file’: Read-only file system
[root@server2 mnt]# df -h
172.25.254.1:/mnt 8.5G 3.0G 5.6G 35% /mnt
[root@server2 mnt]#
4.指定客戶端對文件系統可寫
[root@server1 ~]# vim /etc/exports
/mnt 172.25.254.2(rw,no_root_squash) *(ro)
[root@server1 ~]# exportfs -rv
exporting 172.25.254.2:/mnt
exporting *:/mnt
5.客戶端測試寫入文件系統
[root@server2 mnt]# cd
[root@server2 ~]# umount /mnt/
[root@server2 ~]# mount 172.25.254.1:/mnt /mnt
[root@server2 ~]# cd /mnt/
[root@server2 mnt]# touch file
[root@server2 mnt]# ls
file
6.autofs自動掛載
客戶端配置
[root@server1 ~]# yum install autofs -y
[root@server1 ~]# vim /etc/auto.master
/mnt /etc/auto.mnt
[root@server1 ~]# vim /etc/auto.mnt
pub -ro,vers=3 172.25.254.1:/mnt
[root@server1 ~]# cd /mnt/pub
[root@server1 pub]# ls
pub