【转】NFS服务器配置

转载自:http://andystar.net/2008/07/nfs%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE/

NFS服务器配置

1. 首先安装对应的安装包,在debian里需要安装一下的packages:
nfs-common portmap nfs-kernel-server

可以使用命令:

#dpkg -l nfs-kernel-server nfs-common portmap 

来查询是否已经安装好了,如果没有安装,那么使用apt:

#apt-get update && apt-get upgrade
#apt-get install nfs-kernel-server nfs-common portmap

安装好相应的包

2.然后在Server端(IP 192.168.1.103)配置

#mkdir -p /var/nfs

#vi  /etc/exports

加入

/home   192.168.1.104(rw,sync,no_root_squash)
/home/share 192.168.102.15(rw,sync) *(ro)
/var/nfs    192.168.1.104(rw,sync)

表示把/home 这个目录共享给192.168.1.104,rw表示可以读写,sync,表示client端的操作立即在服务器上写入硬 盘,no_root_squash表示如果client用户是root那么他在Server上也有root权限,squash是压扁的意思

第二行表示IP192.168.102.15的客户机有修改权限,其他机器只有只读权限

关于/etc/exports这个nfs核心配置文件更为详细的配置方法,可参考man 5 exports

常用的一些参数:

            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

3.在Client端(192.168.1.104)上

#mkdir -p /mnt/nfs/home
#mkdir -p /mnt/nfs/var/nfs
#mount 192.168.1.103:/home /mnt/nfs/home
#mount 192.168.1.103:/var/nfs /mnt/nfs/home

然后
#mount
应该如有如下显示:

192.168.1.103:/home/ on /mnt/nfs/home type nfs (rw,addr=192.168.1.103)
192.168.1.103:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.1.103)

然后在Client 端:
#touch /mnt/nfs/home/test.txt
#touch /mnt/nfs/var/nfs/test.txt

#cd /mnt/nfs/home
#ls -lh

drwxr-xr-x  2 proftpd nogroup 4.0K 05-28 18:10 ftp
drwxr-xr-x  3   20001   20001 4.0K 06-18 15:39 jaeson
-rw-r–r–  1 root    root       0 07-18 10:42 test.txt
drwxrwxrwx  3    1001    1001 4.0K 06-06 18:10 virtual
drwxr-xr-x 37 yexing  yexing  4.0K 07-18 11:18 yexing

看到了吗?建立出来的test.txt 拥有者是root!也就是说,如果用no_root_squash方式共享给Client,那么在client上的root就可以在远程Server的文 件系统上也具有root的权限,让我们看看默认的情况是什么:

#cd /mnt/nfs/var/nfs
#ls -lh
-rw-r–r– 1 nobody nogroup 0 07-18 10:50 test.txt

默认情况下是nobody.nogroup的权限,即使你在Client 上有root权限,默认你在Server上也只有nobody.nogroup的权限,这事一个容易搞混的地方

如果想在开机的时候自动挂载,那么就必须知道fstab这个文件了

#vi /etc/fstab

加入:

192.168.1.103:/home    /mnt/nfs/home    nfs    rw,sync,hard,intr    0    0
192.168.1.103:/var/nfs    /mnt/nfs/var/nfs         nfs    rw,sync,hard,intr    0    0

想知道为什么使用nfs,rw,sync,hard,intr的options吗?那么看看

#man nfs

是必须的了!   

这里你会知道怎么用这些选项的!

rw,sync不说了,hard是指Client超时后会自动无线次重试连接NFS Server ,intr是说允许信号中断文件传输

=============
当完成资源共享, 我们如何知道发布了哪些权限呢?这时我们可以查看 /var/lib/nfs/etab 文件,它是有 exportfs 命令根据 /etc/exports 生成的。

            # cat /var/lib/nfs/etab

在客户机上查看NFS的资源共享情况

            # showmount -e 192.168.102.47

            Export list for 192.168.102.47:
            /home/share (everyone)

最后是一些基本但必要的安全方面的措施:

如果我们的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

/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.

我们发现现在已经无法加载共享目录的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值