linux上nfs挂载
環(huán)境準(zhǔn)備
NFS服務(wù)端 CentOS7 192.168.1.11
NFS客戶端 CentOS7 192.168.1.12
安裝NFS與配置
NFS的常用目錄:
/etc/exports #NFS服務(wù)的主要配置文件 /usr/sbin/exportfs #NFS服務(wù)的管理命令 /usr/sbin/showmount #客戶端的查看命令 /var/lib/nfs/etab #記錄NFS分享出來的目錄的完整權(quán)限設(shè)定值 /var/lib/nfs/xtab #記錄曾經(jīng)登錄過的客戶端信息
服務(wù)端
#CentOS系統(tǒng)服務(wù)端 yum -y install nfs-utils yum -y install rpcbind
將服務(wù)加入開機(jī)自啟動(dòng),并啟動(dòng)服務(wù):
systemctl enable rpcbind nfs-server systemctl start rpcbind nfs-server
查看nfs服務(wù)向rpc注冊(cè)的端口信息(當(dāng)前nfs-server未啟動(dòng),所有沒有注冊(cè)端口):
[root@localhost ~]# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper
如果此時(shí)啟動(dòng)nfs,可以發(fā)現(xiàn)nfs隨機(jī)注冊(cè)的端口如下(對(duì)于此種情況下,如果未開啟防火墻,隨機(jī)端口是沒有問題的,一旦開啟就需要將端口固定下來了):
[root@localhost ~]# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 37045 nlockmgr 100021 3 udp 37045 nlockmgr 100021 4 udp 37045 nlockmgr 100021 1 tcp 39375 nlockmgr 100021 3 tcp 39375 nlockmgr 100021 4 tcp 39375 nlockmgr
防火墻配置
NFS的防火墻很難設(shè)定規(guī)則,除了固定的nfs2049、portmapper111之外, 還有很多不固定的端口是由rpc.mountd, rpc.rquotad等服務(wù)所開啟的。因此我們需要在/etc/sysconfig/nfs指定特定的端口,這樣每次啟動(dòng)nfs時(shí),相關(guān)服務(wù)啟動(dòng)的端口就會(huì)固定,如此即可設(shè)置防護(hù)墻!
固定nfs服務(wù)端口
固定端口nfs 2049、portmapper 111,另外3個(gè)服務(wù)端口可設(shè)置為mountd 892、rpc.statd 662、 nlockmgr 32803、32769
配置:
1.修改/etc/sysconfig/nfs文件,將下列內(nèi)容的注釋去掉,如果沒有則添加:
# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=32769
# Port rpc.mountd should listen on.
MOUNTD_PORT=892
# Port rpc.statd should listen on.
STATD_PORT=662
# Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
端口配置完成后查看(注意重啟nfs與服務(wù)器):
[root@localhost ~]# rpcinfo -p
CentOS7下配置
編輯文件 /etc/firewalld/zones/public.xml:
#vim /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <service name="http"/> <service name="https"/> <port protocol="tcp" port="8080"/> <port protocol="tcp" port="22"/> <port protocol="tcp" port="111"/> <port protocol="tcp" port="662"/> <port protocol="tcp" port="892"/> <port protocol="tcp" port="2049"/> <port protocol="tcp" port="32803"/> <port protocol="udp" port="111"/> <port protocol="udp" port="662"/> <port protocol="udp" port="892"/> <port protocol="udp" port="2049"/> <port protocol="udp" port="32769"/> </zone>
注意重啟防火墻
創(chuàng)建共享目錄
創(chuàng)建服務(wù)端共享目錄,例如:
mkdir /nfs
NFS共享目錄文件配置
/etc/exports文件內(nèi)容:
#vi /etc/exports
/nfs 192.168.1.76(rw,sync,secure,no_root_squash,no_all_squash)
以上配置分為三個(gè)部分:
第一部分就是本地要共享出去的目錄。
第二部分為允許訪問的主機(jī)(可以是一個(gè)IP,一個(gè)IP段如192.168.0.0/24、192.168.0.0/255.255.255.0,指定域名的主機(jī)www.example.com,指定域中的所有主機(jī).example.com,所有主機(jī))。
第三部分小括號(hào)里面的,為一些權(quán)限選項(xiàng)。權(quán)限說明:
rw :讀寫;
ro :只讀;
sync :同步模式,內(nèi)存中數(shù)據(jù)時(shí)時(shí)寫入磁盤
async :不同步,把內(nèi)存中數(shù)據(jù)定期寫入磁盤中
secure :nfs通過1024以下的安全TCP/IP端口發(fā)送
insecure :nfs通過1024以上的端口發(fā)送
no_root_squash:NFS客戶端連接服務(wù)端時(shí)如果使用的是root的話,那么對(duì)服務(wù)端分享的目錄來說,
也擁有root權(quán)限。 顯然開啟這項(xiàng)是不安全的
root_squash:當(dāng)客戶端登陸NFS的身份為root用戶時(shí),將客戶端的root用戶及所屬組都映射為匿名用戶
或用戶組(默認(rèn)設(shè)置), 通常使用nobody或nfsnobody身份
subtree:若輸出目錄是一個(gè)子目錄,則nfs服務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置)。
no_subtree:即使輸出目錄是一個(gè)子目錄,nfs服務(wù)器也不檢查其父目錄的權(quán)限,這樣可以提高效率
no_all_squash :無論客戶端登陸NFS的身份為何,都將映射為root用戶(默認(rèn)設(shè)置)
all_squash :不論NFS客戶端連接服務(wù)端時(shí)使用什么用戶,對(duì)服務(wù)端分享的目錄來說都是擁有匿名用戶權(quán)限;
anonuid:匿名用戶的UID值,通常是nobody或nfsnobody,可以在此處自行設(shè)定
anongid:匿名用戶的GID值
配置完成后,重新加載nfs配置(exportfs -rv)或重啟nfs服務(wù)。
exportfs [-aruv]
參數(shù)說明:
-a 全部掛載(或卸載)/etc/exports文件內(nèi)的設(shè)定
-r 重新掛載/etc/exports中的設(shè)置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的內(nèi)容
-u 卸載某一目錄
-v 在export時(shí)將共享的目錄顯示在屏幕上
例如:
[root@localhost /]# exportfs -rv
exporting 192.168.1.12:/nfs
客戶端
#CentOS系統(tǒng)客戶端 yum -y install nfs-utils
掛載NFS共享目錄
1、查看showmount -e IP來查看NFS共享狀態(tài):
[root@localhost /]# showmount -e 192.168.1.11
Export list for 192.168.1.11:
/data 192.168.1.12
2、掛載NFS共享目錄
1)創(chuàng)建服務(wù)端共享目錄,例如:
mkdir /test
2)掛載目錄
#臨時(shí)掛載,即時(shí)生效
mount -t nfs -o nfsvers=3 192.168.1.11:/nfs /test
#配置永久掛載nfs文件系統(tǒng),保存后重啟服務(wù)器即可生效
$ vim /etc/fstab
$ 192.168.1.11:/data /test nfs defaults,nfsvers=3 0 0
客戶端執(zhí)行nfsstat -m命令,查看當(dāng)前所使用的nfs版本:
[root@localhost ~]# nfsstat -m
/data from 192.168.1.11:/data
Flags: rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,
proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.60,mountvers=3,
mountport=892,mountproto=udp,local_lock=none,addr=192.168.1.11
3)查看掛載是否成功:
[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 994M 0 964M 0% /dev
tmpfs 100M 8.4M 962M 1% /run
/dev/mapper/centos-root 6.7G 3.5G 2.2G 53% /
/dev/sda1 497M 118M 350M 24% /boot
192.168.1.11:/nfs 6.2G 4.5G 1.2G 72% /test
常用命令
nfsstat
查看NFS的運(yùn)行狀態(tài),對(duì)于調(diào)整NFS的運(yùn)行有很大幫助:
nfsstat -s #查看服務(wù)端的情況
nfsstat -c #查看客戶端的情況
exportfs
啟動(dòng)了NFS之后又修改了/etc/exports,使用exportfs命令來使改動(dòng)立刻生效
rpcinfo
查看rpc執(zhí)行信息,可以用于檢測(cè)rpc運(yùn)行情況的工具
實(shí)例
實(shí)例一
服務(wù)端NFS配置:
#vi /etc/exports
/nfs 192.168.1.12(rw,sync,secure,no_root_squash,no_all_squash)
客戶端創(chuàng)建文件:touch a,客戶端顯示如下:
[root@localhost test]# touch a
[root@localhost test]# ls -al
total 4
drwxr-xr-x. 2 root root 15 Feb 24 20:52 .
dr-xr-xr-x. 19 root root 4096 Feb 24 20:51 ..
-rw-r--r--. 1 root root 0 Feb 24 20:52 a
服務(wù)端”/data”顯示如下:
[root@localhost /]# ls -al /data
total 0
drwxr-xr-x. 2 root root 15 Feb 24 20:52 .
dr-xr-xr-x. 18 root root 236 Feb 19 00:43 ..
-rw-r--r--. 1 root root 0 Feb 24 20:52 a
實(shí)例二
服務(wù)端NFS配置:
#vi /etc/exports
/data 192.168.1.12(rw,sync,secure,root_squash)
此時(shí)服務(wù)端”/nfs”的權(quán)限:
[root@localhost /]# ls -al | grep nfs
drwxr-xr-x. 2 root root 15 Feb 24 20:52 nfs
客戶端創(chuàng)建文件:touch b,客戶端顯示如下:
[root@localhost test]# touch b
touch: cannot touch 'b': Permission denied
此時(shí)客戶端是不能創(chuàng)建,主要是因”/nfs”的權(quán)限:所在組group和其他用戶other的權(quán)限不能寫,需要修改權(quán)限:
[root@localhost /]# chmod go+w /nfs
[root@localhost /]# ls -al | grep nfs
drwxrwxrwx. 2 root root 15 Feb 24 20:52 nfs
客戶端再次創(chuàng)建文件:touch b,客戶端顯示如下:
[root@localhost test]# touch b
[root@localhost test]# ls -al
total 4
drwxrwxrwx. 2 root root 24 Feb 24 21:03 .
dr-xr-xr-x. 19 root root 4096 Feb 24 20:51 ..
-rw-r--r--. 1 root root 0 Feb 24 20:52 a
-rw-r--r--. 1 nfsnobody nfsnobody 0 Feb 24 21:03 b
服務(wù)端”/nfs”顯示如下:
[root@bogon /]# ls -al /nfs
total 0
drwxrwxrwx. 2 root root 24 Feb 24 21:03 .
dr-xr-xr-x. 18 root root 236 Feb 19 00:43 ..
-rw-r--r--. 1 root root 0 Feb 24 20:52 a
-rw-r--r--. 1 nfsnobody nfsnobody 0 Feb 24 21:03 b
實(shí)例三
服務(wù)端NFS配置:
創(chuàng)建group和user
# groupadd -g 1000 jason
# useradd -u 1000 -g jason -M -s /bin/bash jason
設(shè)置共享目錄權(quán)限
setfacl -m u:jason:rwx /nfs
#vi /etc/exports
/data 192.168.1.12(rw,sync,secure,all_squash,,anonuid=1000,anongid=1000))
此時(shí)服務(wù)端”/nfs”的權(quán)限:
[root@localhost /]# ls -al | grep nfs
drwxr-xr-x. 2 root root 15 Feb 25 12:41 data
[root@localhost /]# getfacl /nfs
getfacl: Removing leading '/' from absolute path names
# file: nfs
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@localhost /]# setfacl -m u:jason:rwx /nfs
[root@localhost /]# getfacl /data
getfacl: Removing leading '/' from absolute path names
# file: nfs
# owner: root
# group: root
user::rwx
user:jason:rwx #多出來一個(gè)用戶jason的權(quán)限r(nóng)wx
group::r-x
mask::rwx
other::r-x
備注:ACL(Access Control List),主要的目的是在提供傳統(tǒng)的 owner,group,others 的 read,write,execute 權(quán)限之外的細(xì)部權(quán)限配置
1)、setfacl可以更精確的控制權(quán)限的分配
2)、getfacl取得某個(gè)文件/目錄的 ACL 配置項(xiàng)目
客戶端創(chuàng)建文件:touch a,客戶端顯示如下:
[root@localhost test]# touch a
[root@localhost test]# ls -al
total 4
drwxrwxr-x. 2 root root 15 Feb 25 12:39 .
dr-xr-xr-x. 19 root root 4096 Feb 24 20:51 ..
#因客戶端也存在uid和gid為1000的jason,所以用戶和組都顯示為jason,否則顯示1000
-rw-r--r--. 1 jason jason 0 Feb 25 12:39 a
服務(wù)端”/nfs”顯示如下:
[root@localhost nfs]# ls -al
total 0
drwxrwxr-x+ 2 root root 15 Feb 25 12:41 .
dr-xr-xr-x. 18 root root 236 Feb 19 00:43 ..
-rw-r--r--. 1 jason jason 0 Feb 25 12:41 a
總結(jié)
以上是生活随笔為你收集整理的linux上nfs挂载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红旗柒在国际誉为什么?
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?