在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
0.什么是NFS(Network FileSystem) 1. NFS至少有两个主要部分:一台服务器和一台(或者更多)客户机。客户机远程访问存放在服务器上的数据。为了正常工作,一些进程需要被配置并运行。 复制代码 代码如下:#rpm –q nfs-utils portmap 查看NFS服务器是否启动: 命令 复制代码 代码如下:#service nfs starus #service portmap status 如果服务器没有启动,则开启服务(默认服务下nfs没有完全开启) 命令 复制代码 代码如下:#service nfs start
#service portmap start 2.RPC 3.NFS 激活的 RPC daemons 4.NFS需要有两个套件才行,分别是: 5.NFS server端的设定: 复制代码 代码如下:#vi /etc/exports /tmp *(rw,no_root_squash) /home/public 192.168.0.*(rw) *(ro) /home/test 192.168.0.100(rw) /home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40) 假设我们在192.168.0.100这个client端登陆此NFS主机(192.168.0.2),那么 情况一:在192.168.0.100的帐号为test这个身份,同时,NFS主机上也有test这个帐号 a).由于NFS主机的/tmp权限为-rwxrwxrwt,所以我(test在192.168.0.100上)在/tmp下面具有存取的权限,并且写入档案的所有人为test. b).在/home/public中,由于我有读写的权限,如果NFS主机在/home/public这个目录的权限对于test开放写入的话,那么就可以读写,并且写入档案的所有人是test。如果NFS主机的/home/public对于test这个使用者并没有开放写入权限时,那就无法写入,虽然/etc/exports里面是rw,也不起作用. c).在/home/test中,权限与/home/public有相同的状态,需要NFS主机的/home/test对于test有开放的权限. d).在/home/linux当中,不论是何种的user,身份都会被变成UID=40的这个帐号 情况二:如果我们在192.168.0.100的身份为test2,但是NFS主机却没有test2这个帐号时 a).在/tmp下还是可以写入,但是写入的档案所有人变成nobody. b).在/home/public与/home/test里面是否可以写入,还需要看/home/public的权限而定,不过身份就被变成nobody了 c)/home/linux下的身份还是变成UID=40的帐号. 情况三:在192.168.0.100的身份为root a).在/tmp里面可以写入,但是由于no_root_squash的参数,改变了预设的root_squash的设定值,所以在/tmp写入档案的所有人为root了. b).在/home/public底下的身份被压缩成了nobody,因为预设的属性都具有root_squash,所以档案所有人就变成了nobody. c)./home/test情况与/home/public相同. d)./home/linux中,root的身份也被压缩成UID=40的那个使用者了. 8.启动服务portmap,nfs 复制代码 代码如下:#/etc/rc.d/init.d/portmap start 复制代码 代码如下:#service portmap start )复制代码 代码如下: #/etc/rc.d/init.d/nfs start (or:复制代码 代码如下:#service nfs start )可以到/var/log/messages里面查看是否正确激活 9.exportfs的用法 复制代码 代码如下:#exportfs -rv //重新export一次 #exportfs -au //全部卸载 10./var/lib/nfs/xtab里面可以查看每个目录的分享权限(但是我怎么也没有找到,靠,找到了,原来要有人mount上nfs后才会出现内容),如: 11.showmount命令 12.查看激活的portnumber 复制代码 代码如下:#netstat -utln nfs 自己所开启的 port ,就是那个 2049 的 port 啦!就是 NFS 主要产生的 port NFS server 在前面我们就提过了,他是 RPC server 的一种,而 NFS 由于提供了多个 program ( 例如 rpc.mountd, rpc.rquotad, rpc.nfsd... ) ,因此就需要激活多个 port 了!而且这些 port 是『随机产生的』,也就是那个 port number 不会是固定的啦!每次 restart nfs 都会得到不一样的 port number 呢!那么 Client 端怎么知道要连接上那个 port 来呼叫需要的 program 呢?呵呵!那就是 sunrpc ( port 111 ) 那个 portmap 服务所产生的 port number 的功用啦!Client 会先连接到 sunrpc 那个 port 去知道应该到那个 port 去呼叫所需要的程序!所以啰, rpc.xxxx 等之类的 daemon 自然就不需要有固定的 port number 啰! NFS客户端的设定 复制代码 代码如下:#mount -t nfs hostname(orIP):/directory /mountpoint 为了担心会不小心将 NFS 端挂进来的具有 SUID 权限档案的程序执行,root可以将NFS 所分享的目录以较为安全的情况挂载进来,可以 复制代码 代码如下:#mount -t nfs -o nosuid,ro hostname:/directory /mountponit
可能出问题的地方: 复制代码 代码如下:#service portmap start #service nfs restart 3.被防火墙搞掉 重新设置防火墙,包括iptables与TCP_Wrappers,因为激活了portmap,所以port 111必须提供出去.因此在iptables rules中,要增加: 复制代码 代码如下:iptables -A INPUT -p TCP --dport 111 -j ACCEPT iptables -A INPUT -p UDP --dport 111 -j ACCEPT 如果还不行,那就是TCP_Wrappers的问题,检查/etc/hosts.deny,如果有一行是: 复制代码 代码如下:ALL: ALL: deny 那就必须在/etc/hosts.allow中增加: 复制代码 代码如下:portmap: ALL: allow 如果我们的NFS针对内部网络开发,对于外部网络只对学术网络开发(140.0.0.0/8),可以: 复制代码 代码如下:iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT 还可以使用TCP_Wrappers,在/etc/hosts.allow里面规定连上 NFS 主机的主机 IP 与名称,例如 复制代码 代码如下:#vi /.etc/hosts.allow portmap: 192.168.0.0/255.255.255.0 :allow portmap: 140.113.23.23 :allow portmap: .sdu.edu.cn :allow RPC Server的相关命令 复制代码 代码如下:rpcinfo #rpcinfo -p hostname(orIP) 要注意的问题: 需要注意的是,由于 NFS 使用的这个 RPC 在 client 端连上主机时,那么你的主机想要关机,那可就会成为『不可能的任务』!我还不知道正确的原因是什么,但是,如果你的 Server 上面还有 Client 在联机,那么你要关机,可能得要等到数个钟头才能够正常的关机成功!嗄!真的假的!不相信吗?不然您自个儿试试看! ^_^!所以啰,建议您的 NFS Server 想要关机之前,能更先『关掉 portmap 与 nfs 』这两个东西!如果无法正确的将这两个 daemons 关掉,那么先以 netstat -utlp 找出 PID ,然后以 kill 将他关掉先!这样才有办法正常的关机成功喔!这个请特别特别的注意呢! 在TurboLinux8.0 for AMD64 (kernel 2.4.21-4smp),mount NFS时候报错为: portmap: server localhost not responding, timed out 解决办法: 复制代码 代码如下:mount -t nfs -o nolock node1:/public /public 即增加-o nolock参数,原因: Unfsd doesn't support NLM locking, and it's causing the lockd daemon to be started (which again requires the portmapper to be installed etc.) |
请发表评论