NFS:網絡文件系統 一般都工作在內核空間
任何程序只要我們能自己執行命令的一定是工作在用戶空間,因爲內核空間的程序只有內核自我能夠管理,,除非我
們使用接口與內核進行交互。(不準,自己就這麼理解吧)
NFS:通過RPC來連接兩個主機
PRC :一種編程技術,協議分爲服務器端和客戶端,他倆之間能夠連接2個主機,從而使倆主機之間看上去就像一個主機一樣,由此可完成兩個主機間的進程通信(就好像本地兩個進程間通信一樣)
本地進程間通信或者進程和內核進行通信:通過IPC機制或系統調用,或函數調用。(IPC機制是指:信號量,共享內存,消息隊列)
NFS:只能驗證IP不能驗證用戶名 protmap 監控TCP/UDP的111端口
NFS:啓動3個進程 NFSD(nfs的主服務),MOUNTED(接受nfs掛載請求的),quotad 限定客戶端在本地可以使用對打磁盤空間的。
nfsd:2049/tcp 2049/udp
mounted與quotad的端口都是半隨機的(之所以稱爲半隨機是因爲他不是自己打開的,是像rpc註冊使用的,是rpc幫他選取的)
nfslock:鎖 (每個用戶向nfs寫文件時都要像nfs申請加鎖,每個文件的鎖,是內核持有的鎖)
nfs配置文件:/etc/exports 在配置文件最後添加客戶端信息
/path/to/somedir/ ClIENT LIST
多個客戶之間用空白字符分隔
每個客戶端後面必須立即根一個小括號,裏面定義了次客戶的訪問特性,如訪問權限等
如:
172.16.0.0/16(ro,async,root_squash) 192.168.0.0/24(rw,sync)
root_squash:將root用戶映射爲來賓賬號:默認啓用此選項
no_root_sqush:不將root用戶映射爲來賓賬號
all_squash:將所有賬號映射爲來賓賬號
anonuid,anongid:指定映射的來賓賬號的uid與gid
//--------------------------------------------------------------------------------
debian安裝nfs
安裝nfs服務器端
apt-get install nfs-kernel-server
rpcinfo -p localhost 查看rpc起了哪些服務與端口
vim /etc/exports
/shared 192.168.11.199(ro,async) #在最後添加你要共享的文件路徑,與共享給那些主機
root@debian:/home/lyw# /etc/init.d/nfs-kernel-server restart 重啓nfs服務
root@debian:/home/lyw# showmount -e 192.168.11.99 查看服務器上給那些主機共享了什麼目錄
安裝nfs客戶端
apt-get install nfs-common
showmount -e 192.168.11.99 查看服務器的共享目錄
mdkir -p /mnt/nfs 創建掛載文件夾
mount -t nfs 192.168.11.99:/shared /mnt/nfs 將共享目錄掛載到文件夾下
服務器端向共享目錄裏cp些文件 在客戶端查看 看是否能看到
showmount -a 服務器端ip或主機名 查看都有哪些客戶端掛載在服務器上及客戶端對應列表
(根據nfs的版本不同 命令可能顯示的結果不一樣 如 nfs4系統就顯示不出來 有哪些客戶端掛載在服務器上)
開機自動掛載
vim /etc/fastab
192.168.11.99:/shared /mnt/nfs nfs defaults,rnetdev 0 0
rnetdev (指定的網絡設備 開機時如果掛載不上 就自動忽略掉 ,不加的話 如果沒掛上,則機器就起不來了)
//-------------------------------------------------------------------------------------------------------------------------------------------
服務器端:
把所有來訪用戶都映射爲uid爲510的賬號
服務器端:
把所有來訪用戶都映射爲uid爲510的賬號
root@debian:/shared# useradd -u 510 nfstest
root@debian:/shared# touch ./nfstest
root@debian:/shared# chown nfstest.nfstest ./nfstest
root@debian:/shared# vim /etc/exports
/shared 192.168.11.199(rw,async,all_squash,anonuid=510,anongid=510)
root@debian:/shared# exportfs -ra
exportfs命令:
-a: 根-r或-u選項同時使用,表示重新掛載所有文件系統或取消導出文件系統
-r:重新導出
-u:取消導出
-v:顯示詳細信息
客戶端:
先卸載 root@zabbix:/home/lyw# umount /mnt/nfs
再掛載 root@zabbix:/home/lyw# mount -t nfs 192.168.11.99:/shared /mnt/nfs
root@zabbix:/mnt/nfs# ls -l
這樣所有客戶端的訪問賬號,都對應服務器端的uid爲510的賬號,服務器uid=510賬號對共享目錄裏的文件有什麼權限,客戶端登陸的賬號就對這些文件有什麼權限