⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0330nfs.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		那么权限会是什么情况呢?让我们来检查一下∶<br /><br />

		<li><span class=text_import2>用户端与主机端具有相同的 UID 与帐号∶</span><br />
		<div class=block2>
		假设我在 192.168.0.100 登入这部 NFS (IP 假设为 192.168.0.2) 主机,并且我在 
		192.168.0.100 的帐号为 dmtsai 这个身份,同时,在这部 NFS 上面也有 dmtsai 这个帐号,
		并具有相同的 UID ,果真如此的话,那么∶<br />
		<ol>
		<li>由于 192.168.0.2 这部 NFS 主机的 /tmp 权限为 -rwxrwxrwt ,所以我 (dmtsai 在 192.168.0.100 上面) 
			在 /tmp 底下具有存取的权限,并且写入的档案所有人为 dmtsai ;
		<li>在 /home/public 当中,由于我有读写的权限,所以如果在 /home/public 这个目录的权限对于 dmtsai 
			有开放写入的话,那么我就可以读写,并且我写入的档案所有人是 dmtsai 。但是万一 
			/home/public 对于 dmtsai 这个使用者并没有开放可以写入的权限时,
			那么我还是没有办法写入档案喔!这点请特别留意!
		<li>在 /home/test 当中,我的权限与 /home/public 相同的状态!还需要 NFS 主机的 /home/test 对于 
			dmtsai 有开放权限;
		<li>在 /home/linux 当中就比较麻烦!因为不论您是何种 user ,您的身份一定会被变成 UID=40 
			这个帐号!所以,这个目录就必需要针对 UID = 40 的那个帐号名称,修改他的权限才行!
		</ol>
		</div>

		<li><span class=text_import2>用户端与主机端的帐号并未相同时∶</span><br />
		<div class=block2>
		假如我在 192.168.0.100 的身份为 vbird ,但是 192.168.0.2 这部 NFS 主机却没有 vbird 
		这个帐号时,情况会变成怎样呢?<br />
		<ol>
		<li>我在 /tmp 底下还是可以写入,但是写入的档案所有人变成 nobody 了;
		<li>我在 /home/public 里面是否可以写入,还需要视 /home/public 的权限而定,不过,反正我的身份就被变成 
			nobody 了就是;
		<li>/home/test 的观点与 /home/public 相同!
		<li>/home/linux 底下,我的身份就被变成 UID = 40 那个使用者就是了!
		</ol>
		</div>

		<li><span class=text_import2>当用户端的身份为 root 时∶</span><br />
		<div class=block2>
		假如我在 192.168.0.100 的身份为 root 呢? root 这个帐号每个系统都会有呀!权限变成怎样呢?<br />
		<ol>
		<li>我在 /tmp 里面可以写入,并且由于 no_root_squash 的参数,改变了预设的 
			root_squash 设定值,所以在 /tmp 写入的档案所有人为 root 喔!
		<li>我在 /home/public 底下的身份还是被压缩成为 nobody 了!因为预设属性里面都具有 
			root_squash 呢!所以,如果 /home/public 有针对 nobody 
			开放写入权限时,那么我就可以写入,但是档案所有人变成 nobody 就是了!
		<li>/home/test 与 /home/public 相同;
		<li>/home/linux 的情况中,我 root 的身份也被压缩成为 UID = 40 的那个使用者了!
		</ol>
		</div>

		这样的权限讲解之后,您可以了解了吗?这里是最重要的地方,如果这一关通过了,底下的咚咚就没有问题啦! ^_^!
		当然啦,您还是得要回到前一小节<a href="#What_NFS_perm">NFS 的档案存取权限</a>好好的瞧一瞧,
		才能解决 NFS 的问题喔!<br >
	</div>

	<hr /><a NAME="nfsserver_startup"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">启动 NFS</span><br />
	<div class=block2>
		设定档搞定后,当然要开始来启动才行啊!而前面我们也提到过,NFS 的启动还需要 portmap 的协助才行啊!
		所以赶紧来启动吧!<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>/etc/init.d/portmap start</span>
<span class=term_say># 如果 portmap 本来就已经在执行了,那就不需要启动啊!</span>

[root@linux ~]# <span class=term_command>/etc/init.d/nfs start</span>
<span class=term_say># 有时候可能会出现如下的警告讯息∶</span>
exportfs: /etc/exports [3]: No 'sync' or 'async' option specified 
for export "192.168.0.100:/home/test".
  Assuming default behaviour ('sync').
<span class=term_say># 上面的警告讯息仅是在告知因为我们没有指定 sync 或 async 的参数,
# 则 NFS 将预设会使用 sync 的资讯而已。你可以不理他,也可以加入 /etc/exports。</span>

[root@linux ~]# <span class=term_command>vi /etc/exports</span>
<span class=term_write>/tmp          *(rw,no_root_squash,sync)
/home/public  192.168.0.0/24(rw,sync)    *(ro,sync)
/home/test    192.168.0.100(rw,sync)
/home/linux   *.linux.org(rw,all_squash,anonuid=40,anongid=40,sync)</span>

[root@linux ~]# <span class=term_command>/etc/init.d/nfs restart</span>
</pre></td></tr></table>

		那个 portmap 根本就不需要设定!只要直接启动他就可以啦!<span class=text_import2>启动之后,会出现一个 
		port 111 的 sunrpc 的服务,那就是 portmap 啦</span>!至于 nfs 则会启动至少两个以上的 daemon 
		出现!然后就开始在监听 Client 端的需求啦!你必须要很注意萤幕上面的输出资讯,
		因为如果设定档写错的话,萤幕上会显示出错误的地方喔!<br /><br />

		此外,如果你想要增加一些 NFS 
		伺服器的资料一致性功能时,可能需要用到 rpc.lockd 及 rpc.statd 等 RPC 服务,
		那么或许你可以增加一个服务,那就是 nfslock<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>/etc/init.d/nfslock start</span>
</pre></td></tr></table>

		启动之后,请赶快到 /var/log/messages 里面看看有没有被正确的启动呢?<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /var/log/messages</span>
Sep 22 00:01:37 linux nfs: Starting NFS services:  succeeded
Sep 22 00:01:37 linux nfs: rpc.rquotad startup succeeded
Sep 22 00:01:37 linux nfsd[1050]: nfssvc_versbits: +2 +3 +4
Sep 22 00:01:37 linux nfs: rpc.nfsd startup succeeded
Sep 22 00:01:37 linux nfs: rpc.mountd startup succeeded
Sep 22 00:01:37 linux rpcidmapd: rpc.idmapd -SIGHUP succeeded
</pre></td></tr></table>

		在确认没有问题之后,接下来我们来瞧一瞧那么 NFS 到底开了哪些埠口?<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>netstat -ultn</span>
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address State   PID/Program name
tcp        0      0 0.0.0.0:2049   0.0.0.0:*       LISTEN  -
tcp        0      0 0.0.0.0:803    0.0.0.0:*       LISTEN  1047/rpc.rquotad
tcp        0      0 0.0.0.0:111    0.0.0.0:*       LISTEN  32503/portmap
tcp        0      0 0.0.0.0:819    0.0.0.0:*       LISTEN  1064/rpc.mountd
udp        0      0 0.0.0.0:2049   0.0.0.0:*               -
udp        0      0 0.0.0.0:800    0.0.0.0:*               1047/rpc.rquotad
udp        0      0 0.0.0.0:816    0.0.0.0:*               1064/rpc.mountd
udp        0      0 0.0.0.0:111    0.0.0.0:*               32503/portmap
</pre></td></tr></table>

		注意看到上面喔!总共产生了好多的 port 喔!真是可怕!不过主要的埠口是∶<br />
		<ul><span class=text_import2>
		<li>portmap 启动的 port 在 111;
		<li>NFS 启动的 port 在 2049;
		<li>其他 rpc.daemons 启动的 port 则是随机产生的,因此需向 port 111 注册。
		</span></ul>
		<a name="rpcinfo"></a>好了,那我怎么知道每个 RPC 服务的注册状况?没关系,你可以使用 rpcinfo 来处理的。<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpcinfo [-p] [IP|hostname]</span>
<span class=term_say>参数∶
-p ∶显示出所有的 port 与 porgram 的资讯;</span>

<span class=term_hd>范例一∶显示出目前这部主机的 RPC 状态</span>
[root@linux ~]# <span class=term_command>rpcinfo -p localhost</span>
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100011    1   udp    800  rquotad
    100011    2   udp    800  rquotad
    100011    1   tcp    803  rquotad
    100011    2   tcp    803  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100005    1   udp    816  mountd
    100005    1   tcp    819  mountd
    100005    2   udp    816  mountd
    100005    2   tcp    819  mountd
    100005    3   udp    816  mountd
    100005    3   tcp    819  mountd
<span class=term_say>#         NFS版本       埠口  服务名称</span>
</pre></td></tr></table>

		仔细瞧瞧,上面出现的资讯当中除了程式名称与埠口的对应可以与 netstat -tlunp 
		输出的结果作比对之外,还需要注意到 NFS 的版本支援!新的 NFS 版本传输速度较快,
		由上表看起来,我们的 NFS 至少支援到第 3 版,应该还算合理啦! ^_^!
		如果你的 rpcinfo 无法输出,那就表示注册的资料有问题啦!可能需要重新启动
		portmap 与 nfs 喔!<br /><br />

	</div>

	<hr /><a NAME="nfsserver_look"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">NFS 的连线观察</span><br />
	<div class=block2>
		在你的 NFS 伺服器设定妥当之后,我们可以先自我测试一下是否可以连线喔!
		就是利用 showmount 这个指令来查阅!<br />
<a name="showmount"></a>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>showmount [-ae] [hostname|IP]</span>
<span class=term_say>参数∶
-a ∶显示目前主机与用户端的 NFS 连线分享的状态;
-e ∶显示某部主机的 /etc/exports 所分享的目录资料。</span>

<span class=term_hd>范例一∶请显示出刚刚我们所设定好的相关 exports 资讯</span>
[root@linux ~]# <span class=term_command>showmount -e localhost</span>
Export list for localhost:
/tmp         *
/home/linux  *.linux.org
/home/public (everyone)
/home/test   192.168.0.100
</pre></td></tr></table>

		很简单吧!所以,当您要扫瞄某一部主机他提供的 NFS 分享的目录时,就使用 showmount -e 
		IP (或hostname) 即可!非常的方便吧!这也是 NFS client 端最常用的指令喔!<br /><br />
<a name="etab"></a>
		事实上 NFS 关于目录权限设定的资料非常之多!我们可以检查一下 /var/lib/nfs/etab 就知道了!<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>tail /var/lib/nfs/etab</span>
/home/public    *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,
subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
<span class=term_say># 上面是同一行,可以看出除了 ro, sync, root_squash 等等,
# 其实还有 anonuid 及 anongid 等等的设定!</span>

/tmp    *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtr
ee_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
<span class=term_say># 同样的,在 /tmp 也有很多的权限相关的参数喔!</span>
</pre></td></tr></table>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -