zoukankan      html  css  js  c++  java
  • NFS配置与安装

    安装

    1 环境描述:
        * 网络环境:
                      NFS server: 192.168.102.47
                      NFS client: 192.168.102.15
                      NFS client: 192.168.102.61
        * 软件版本
                      nfs-common              5-20 
                      nfs-kernel-server       1.0.9-5 
                      portmap                 1.0.9-5
    2 安装:
    服务器端安装
        在Debian系统下安装NFS是相当简单的,在NFS服务器上执行下面的命令即可
                    # aptitude install  nfs-common nfs-kernel-server portmap
    在客户端则需要安装:
                    # aptitude install  nfs-common portmap
    3 服务的启动与停止
    启动服务
                    # /etc/init.d/nfs-kernel-server start
    停止服务
                    # /etc/init.d/nfs-kernel-server stop
    重启服务
                    # /etc/init.d/nfs-kernel-server restart
    *************************
    服务器端配置
    1 创建共享目录
                # mkdir /home/share
                # chown nobody.nogroup /home/share
    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赋予读写权限,其他机器仅有只读权限。
    3 重启NFS服务
                # /etc/init.d/nfs-kernel-server restart
    4 在客户机上查看NFS的资源共享情况
                # showmount -e 192.168.102.47
                Export list for 192.168.102.47:
                /home/share (everyone)
    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, subtree_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, secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
    现在我们来查看服务器上有关NFS服务器启动了哪些端口:
                tonybox:/home/share# lsof -i|grep rpc
                portmap   1931 daemon    3u  IPv4   4289       UDP *:sunrpc
                portmap   1931 daemon    4u  IPv4   4290       TCP *:sunrpc (LISTEN)
                rpc.statd 3206  statd    3u  IPv4   7081       UDP *:1029
                rpc.statd 3206  statd    6u  IPv4   7072       UDP *:838
                rpc.statd 3206  statd    7u  IPv4   7085       TCP *:1031 (LISTEN)
                rpc.mount 3483   root    6u  IPv4   7934       UDP *:691
                rpc.mount 3483   root    7u  IPv4   7937       TCP *: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      /mnt    nfs     rsize=8192,wsize=8192,timeo=14,intr
    重启客户机,即可实现系统启动时自动挂栽共享资源
    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
  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/smallcoderhujin/p/3314670.html
Copyright © 2011-2022 走看看