Nfs

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Nfs as PDF for free.

More details

  • Words: 590
  • Pages: 7
3. 安装 3.1 环境描述: * 网络环境: nfs server: 192.168.102.47 nfs client: 192.168.102.15 nfs client: 192.168.102.61 * 软件版本 nfs-common nfs-kernel-server portmap

5-20 1.0.9-5 1.0.9-5

3.2 安装: 服务器端安装 在 debian 系统下安装 nfs 是相当简单的,在 nfs 服务器上执行下面的命令即可 # aptitude install

nfs-common nfs-kernel-server portmap

在客户端则需要安装: # aptitude install

nfs-common portmap

3.3 服务的启动与停止 启动服务 # /etc/init.d/nfs-kernel-server start 停止服务 # /etc/init.d/nfs-kernel-server stop 重启服务 # /etc/init.d/nfs-kernel-server restart ************************* 4. 服务器端配置 4.1 创建共享目录 # mkdir /home/share # chown nobody.nogroup /home/share

4.2 创建或修改/etc/exports 配置文件 这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成: [共享的目录] [主机名或 ip(参数,参数)] 其中参数是可选的,当不指定参数时,nfs 将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。 当主机名或 ip 地址为空时,则代表共享给任意客户机提供服务。 当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样: [共享的目录] [主机名 1 或 ip1(参数 1,参数 2)] [主机名 2 或 ip2(参数 3,参数 4)] 下面是一些 nfs 共享的常用参数: ro

只读访问

rw

读写访问

sync

所有数据在请求时写入共享

async

nfs 在写入数据前可以相应请求

secure

nfs 通过 1024 以下的安全 tcp/ip 端口发送

insecure

nfs 通过 1024 以上的端口发送

wdelay

如果多个用户要写入 nfs 目录,则归组写入(默认)

no_wdelay

如果多个用户要写入 nfs 目录,则立即写入,当使用 async

时,无需此设置。 hide

在 nfs 共享目录中不共享其子目录

no_hide

共享 nfs 目录的子目录

subtree_check

如果共享/usr/bin 之类的子目录时,强制 nfs 检查父目录的

no_subtree_check

和上面相对,不检查父目录权限

all_squash

共享文件的 uid 和 gid 映射匿名用户 anonymous,适合公用目

no_all_squash

保留共享文件的 uid 和 gid(默认)

root_squash

root 用户的所有请求映射成如 anonymous 用户一样的权限

权限(默认)

录。

(默认)

no_root_squas

root 用户具有根目录的完全管理访问权限

anonuid=xxx

指定 nfs 服务器/etc/passwd 文件中匿名用户的 uid

anongid=xxx

指定 nfs 服务器/etc/passwd 文件中匿名用户的 gid

配置文件/etc/exports 内容如下: $ cat /etc/exports /home/share 192.168.102.15(rw,sync) *(ro) 配置说明: 对 192.168.102.15 赋予读写权限,其他机器仅有只读权限。 4.3 重启 nfs 服务 # /etc/init.d/nfs-kernel-server restart 4.4 在客户机上查看 nfs 的资源共享情况 # showmount -e 192.168.102.47 export list for 192.168.102.47: /home/share (everyone) 4.5 使用 mount 命令即可挂栽共享资源 在客户机 192.168.102.15 上加载共享资源 # mount 192.168.102.47:/home/share /mnt # cd /mnt # echo '12345'> 123 即可发现对服务器共享目录可写 # umount /mnt 在客户机 192.168.102.61 上加载共享资源 # mount 192.168.102.47:/home/share /mnt # cd /mnt # ls 123 # touch 321 touch: cannot touch `321': permission denied # echo '123455' >123

-bash: 123: permission denied 即可发现对服务器共享目录只有读取权限, 这与我们在服务器端的权限设置是相符的。 是不是我们每次修改了配置文件都需要重启 nfs 服务呢? 这个时候我们就可以用 exportfs 命令重新扫描 /etc/exports 文件,来使改动立刻生效。 比如: # exportfs -au 卸载所有共享目录 # exportfs -rv 重新共享所有目录并输出详细信息 exportfs 命令有软件包 nfs-kernel-server 提供,详细的 exportfs 命令说明请查看: man exportfs 中文的手册说明可以查看这里: exportfs 联机手册 当完成资源共享, 我们如何知道发布了哪些权限呢?这时我们可以查看 /var/lib/nfs/etab 文件,它是有 exportfs 命令根据 /etc/exports 生成的。 # cat /var/lib/nfs/etab /home/share 192.168.102.15(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,sub tree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534) /home/share *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check,se cure_locks,acl,mapping=identity,anonuid=65534,anongid=65534) 现在我们来查看服务器上有关 nfs 服务器启动了哪些端口: tonybox:/home/share# lsof -i|grep rpc portmap 1931 daemon 3u ipv4 4289 portmap 1931 daemon 4u ipv4 4290 rpc.statd 3206 statd 3u ipv4 7081 rpc.statd 3206 statd 6u ipv4 7072 rpc.statd 3206 statd 7u ipv4 7085 rpc.mount 3483 root 6u ipv4 7934 rpc.mount 3483 root 7u ipv4 7937 ***************************

udp tcp udp udp tcp udp tcp

*:sunrpc *:sunrpc (listen) *:1029 *:838 *:1031 (listen) *:691 *:694 (listen)

5. 安全问题: 5.1 iptables 防火墙 如果我们的 nfs 服务器在防火墙后边,则需要在防火强策略中加入如下策略: -a input -p tcp -m state --state new -m multiport --dport 111,2049,4001,32764:32767 -j accept -a input -p udp -m state --state new -m multiport --dport 111,2049,4001,32764:32767 -j accept 5.2 使用 /etc/hosts.allow 和/etc/hosts.deny 控制客户端的访问 /etc/hosts.allow 和/etc/hosts.deny 这两个文件是 tcpd 服务器的配置文件,tcpd 服务器可以控制外部 ip 对本机服务的访问。这两个配置文件的格式如下: #服务进程名:主机列表:当规则匹配时可选的命令操作 server_name:hosts-list[:command] /etc/hosts.allow 控制可以访问本机的 ip 地址,/etc/hosts.deny 控制禁止访问本机的 ip。如果两个文 件的配置有冲突,以 /etc/hosts.deny 为准。下面是一个/etc/hosts.allow 的示例: all:127.0.0.1

#允许本机访问本机所有服务进程

smbd:192.168.0.0/255.255.255.0

#允许 192.168.0.网段的 ip 访问 smbd 服务

all 关键字匹配所有情况,except 匹配除了某些项之外的情况,paranoid 匹配你想控制的 ip 地址和它的域名 不匹配时(域名伪装)的情况。 比如,在服务器的 /etc/hosts.deny 文件作如下设置: # cat /etc/hosts.deny portmap:192.168.102.15 然后在客户机 192.168.102.15 上加载共享目录 # mount 192.168.102.47:/home/share /mnt mount to nfs server '192.168.102.47' failed. 我们发现现在已经无法加载共享目录的。 ********************** 6. 资源使用

除了使用 mount 的命令手动挂栽共享资源,还可以使用其他方法实现共享资源的自动挂栽: 6.1 启动时自动挂栽 修改客户机的 /etc/fstab 文件,加入类似如下行: 192.168.102.47:/home/share rsize=8192,wsize=8192,timeo=14,intr

/mnt

nfs

重启客户机,即可实现系统启动时自动挂栽共享资源 6.2 使用 autofs 实现资源挂栽 autofs 使用 automount 守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。 autofs 查询主配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后,它使用适用于各个挂载点的 参数来启动 automount 进程。主配置中的每一行都定义一个挂载点,然后用单独的配置文件定义在该挂载点下 要挂载的文件系统。 安装 autofs # aptitude

install autofs

修改/etc/auto.master 文件, 加入如下内容: /mnt

/etc/auto.nfs

创建 /etc/auto.nfs 文件内容如下: nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share 这样,每当您进入 /mnt/nfs 目录时,系统都会尝试将服务器的共享资源挂栽到该目录上。应当注意 nfs 目录 是由 automount 动态地创建的,它不应该在客户机器上实际存在。 tonybox2:/# cd /mnt tonybox2:/mnt# ls tonybox2:/mnt# cd nfs tonybox2:/mnt/nfs# ls 123 tonybox2:/mnt/nfs# ls -l total 4 -rw-r--r-- 1 nobody nogroup 6 2006-08-22 07:50 123 tonybox2:/mnt/nfs# 如果修改了/etc/auto.master 主配置文件,则需要运行 #/etc/init.d/autofs reload 对其进行重新加载

*************************** 7. 参考文献 debianwiki-nfs linux nfs overview, faq and howto documents 网络文件系统(nfs) 简易 nfs 服务器配置 setting up nfs howto linux nfs-howto next previous contents

Related Documents

Nfs
November 2019 21
Nfs
October 2019 18
Nfs
November 2019 15
Nfs Undercover
May 2020 13
Unx-nfs
June 2020 14
Nfs-mw
August 2019 39