`
jcyanfan
  • 浏览: 74703 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Linux 共享目录NFS设置

阅读更多

NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。

RPC(Remote Procedure Call)


NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

因为我用的是Redhat Linux,所以下面的操作都是在这个系统上的。

一:服务器端的设定(以LINUX为例)

服务器端的设定其实很简单,只需设定一个文件就行,就是/etc/exports这个文件,设定格式如下:

欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4)

上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。

Exports文件中可以设定的参数主要有以下这些:

参数                                                说明

Ro                            该主机对该共享目录有只读权限
Rw                            该主机对该共享目录有读写权限
Root_squash            客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
No_root_squash       客户机用root访问该共享文件夹时,不映射root用户
All_squash                客户机上的任何用户访问该共享目录时都映射成匿名用户
Anonuid                    将客户机上的用户映射成指定的本地用户ID的用户
Anongid                    将客户机上的用户映射成属于指定的本地用户组ID
Sync                         资料同步写入到内存与硬盘中
Async                       资料会先暂存于内存中,而非直接写入硬盘
Insecure                   允许从这台机器过来的非授权访问

例如可以编辑/etc/exports为:

/  user01(rw) user02(rw,no_root_squash)   表示共享服务器上的根目录(/)只有user01和user02两台主机可以访问,且有读写权限;user01主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;user02主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录

/root/share/  192.168.1.2(rw,insecure,sync,all_squash)  表示共享服务器上的/root/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

/home/ylw/  *.test.com (rw,insecure,sync,all_squash)   表示共享/home/ylw/目录,*.test.com域中所有的主机都可以访问该目录,且有读写权限

/home/share/  .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4)     表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户

设定好后可以使用以下命令启动NFS:

service nfs restart  

exportfs命令:

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:

exportfs [-aruv]

-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v    在export的时候,将详细的信息输出到屏幕上
具体例子:
[root @test root]# exportfs -rv <==全部重新 export 一次!
exporting 192.168.1.2:/root/share
exporting *.test.com:/home/ylw
exporting *.test.com:/home/share
reexporting 192.168.1.100:/home/test to kernel
exportfs -au <==全部都卸载了。

二、客户段的操作:

1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
showmout
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
例如:
showmount -e 192.168.1.2
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.1.12

2、mount nfs目录的方法:

mount -t nfs hostname(orIP):/directory /mount/point

具体例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs

3、mount nfs的其它可选参数:

HARD mount和SOFT MOUNT:
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

4、/etc/fstab的设定方法

若客户机启动就自动挂载服务器的共享目录,则需修改客户机上的/etc/fstab文件
/etc/fstab格式:(192.168.1.1:/share  /mnt    nfs      defaults        0       2)
                  Fs_spec           fs_file  fs_type     fs_options   fs_dump  fs_pass
Fs_spec:定义希望加载的文件系统所在的设备或远程文件系统,对于nfs则设为IP:/共享目录
Fs_file:本地挂载点
Fs_type:挂载类型
Fs_options:挂载参数
Fs_dump:该选项被“dump”命令使用来检查一个文件系统该以多快频率进行转储,若不需转储即为0
Fs_pass:该字段被fsck命令使用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”对应该字段值为1,其他文件系统为2,若该文件系统无需在启动时被扫描则为0

5、与NFS有关的一些命令介绍

nfsstat:
查看NFS的运行状态,对于调整NFS的运行有很大帮助
rpcinfo:
查看rpc执行信息,可以用于检测rpc运行情况的工具。


三、NFS故障解决

1、NFSD没有启动起来
首先要确认 NFS 输出列表存在,否则 nfsd 不会启动。可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件。

2、mountd 进程没有启动
mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找 /etc/xtab文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果没有起来的话可以检查是否安装了PORTMAP组件。
rpm -qa|grep portmap

3、fs type nfs no supported by kernel
kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。

4、can't contact portmapper: RPC: Remote system error - Connection refused
出现这个错误信息是由于SEVER端的PORTMAP没有启动。

5、mount clntudp_create: RPC: Program not registered
NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。

6、mount: localhost:/home/test failed, reason given by server: Permission denied
这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。

7、被防火墙阻挡
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。


四、NFS安全

加强NFS安全的方法:

1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。

2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
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

3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。

4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny

5、改变默认的NFS 端口
NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。

五、实例

最后简单讲一下我在服务器上的配置过程
第一步:在服务器上

# vi /etc/exports

/home/ylw      
www.ylw.com(rw, sync, insecure)

配置好后运行:

# service nfs start

第二步 在客户端

#mount -t nfs www.ylw.com:/home/ylw  /home/ylwclient

没有出错提示,NFS就正常运行了,你在客户机上/home/ylwclient里看到的目录文件其实就是服务器上/home/ylw的内容。

说明:一开始我在配置/etc/exports文件时没有加“insecure"参数,在客户机上mount时,出现提示:

mount:www.ylw.com:/home/ylw failed, reason given by server:权限不够

加上该参数后运行就成功了。

另外:因为linux系统有很强的权限管理,不同的目录属于不同的用户,服务器端与客户端的用户不同,有可能导致虽然已经将服务器端的目录mount到客户端了,但在客户端只能看而不能写,除非你用ROOT帐户进入,这又带来安全问题。我的解决办法是在客户端上建一个与服务器端目录属主ID一样的用户,比如:

服务器端 /home/ylw目录属主为ylw  其ID为 510 (具体看/etc/passwd文件)

在客户端建一用ylwclient,将其ID改为510 且将客户端/home/ylwclient目录的属主改为ylwclient

这样就可真正在像本机目录一样读写操作了。

分享到:
评论

相关推荐

    linux系统设置NFS共享目录

    Linux 系统设置 NFS 共享目录 Linux 系统设置 NFS 共享目录是指在 Linux 系统中实现-shared 文件系统的技术,允许多个客户端访问同一个文件系统。NFS(Network File System)是一种基于 RPC(Remote Procedure Call...

    实现window同linux的nfs共享目录服务

    ### 实现Windows与Linux的NFS共享目录服务详解 #### 引言 在跨平台的开发环境中,实现Windows与Linux之间的文件共享是一项常见的需求。NFS(Network File System)作为一款成熟的网络文件系统协议,提供了在异构...

    windows挂载linux目录 NFS

    ### Windows挂载Linux目录NFS知识点详解 #### 目标 本篇内容旨在详细介绍如何在Windows(版本10.0.0.51)中挂载Linux(版本10.1.2.120)的文件目录。具体示例为将Linux上的`/nfs`目录挂载至Windows下的X:盘,并解决...

    Linux nfs Linux nfs Linux nfs

    - 其他Linux计算机可以通过`mount`命令访问NFS服务器上的共享目录。例如,将远程计算机的`/opt`目录挂载到本地的`/var/tmp`目录下: ``` mount -t nfs 192.168.0.58:/opt /var/tmp ``` - 在这个例子中,`192....

    linux系统中NFS共享实验

    如果可以访问共享目录,说明NFS共享实验成功。 创建文件测试 在服务器上,创建一个测试文件 `a`: `sudo touch /shared_dir/a` 然后,在客户端上,查看是否可以访问文件 `a`: `ls /mnt/a` 如果可以访问文件 `...

    Linux共享目录

    ### Linux共享目录详解 在日常工作中,我们常常需要在不同的操作系统之间进行文件交换与共享,尤其是在使用虚拟机的情况下。Linux系统提供了多种方式来实现不同主机间的文件共享,其中较为常见的一种方式是通过...

    linux客户端挂载nfs.docx

    NFS 客户端可以挂载 NFS 服务器上的共享目录,使得用户可以访问和操作远程文件系统。 为什么使用 NFS? 使用 NFS 有多种优势: * 文件共享:NFS 允许不同的机器上的用户共享文件和目录,提高了文件共享的效率和...

    linux内核支持nfs文件系统

    - **Root file system on NFS**:如果计划将Linux系统的根目录设置为NFS,那么需要选择这个选项。但请注意,这需要谨慎操作,因为根文件系统错误可能导致系统无法启动。 - **NFS server support**:如果你想让这台...

    个人关于Linux挂载NFS系统的一些总结(完整)

    本例中使用`/forlinux/root`目录作为共享目录。如果不存在,需要创建: ```bash mkdir /forlinux/root ``` - 将`FORLINX_6410_yaffs2_v1.0.tgz`压缩文件拷贝到`/forlinux/root`目录下,并解压以安装yaffs2文件...

    linux下NFS文件共享使用

    5. 挂载共享目录:在客户端,需要挂载服务器端的共享目录。 `#mount -t nfs 192.168.1.240:/testshare /test //挂载 server 端的/testshare 目录到 client 端的/test 目录` NFS文件共享的原理 NFS文件共享的原理...

    linux设置共享文件目录的方法

    ### Linux设置共享文件目录的方法 在跨平台工作环境中,实现不同操作系统之间的文件共享变得尤为重要。本文将详细介绍如何在Linux系统中设置共享文件目录,并通过具体的步骤实现与Windows系统的文件共享功能。 ###...

    Linux下nfs的配置

    使用 `mount` 命令将 NFS 服务器上的共享目录挂载到客户端的指定目录: ```bash # mount -t nfs -o no_lock 192.168.1.1:/home/nfs /mnt/nfs ``` 其中 `-o no_lock` 参数是为了防止锁定问题导致的挂载失败。 **4. ...

    Linux操作系统下设置NFS共享

    为了验证NFS服务器配置是否成功,可以在服务器上执行`mount`命令,挂载自己的NFS共享,查看共享目录内容。例如: ``` # mount -t nfs 192.168.0.20:/home/work /mnt # ls /mnt ``` 在嵌入式目标系统端,配置NFS...

    linux nfs 共享设置所需要的包

    在Linux系统中,NFS(Network File System)是一种允许网络中的计算机之间共享文件和目录的协议。NFS服务使得用户可以在远程系统上如同操作本地文件一样操作远程文件,极大地提升了协作效率。为了在Linux上设置NFS...

    基于linux的 NFS服务器搭建.rar_Linux 文件共享_NFS服务器搭建_continentacb_linux_过程

    在客户端,使用`mount`命令将服务器上的NFS共享目录挂载到本地的一个目录。例如: ```bash sudo mkdir /mnt/nfs_share sudo mount -t nfs server_ip:/home/share /mnt/nfs_share ``` 将`server_ip`替换为NFS服务器...

    构建Linux上的NFS服务器.pdf

    5. 在客户端上配置并挂载NFS服务器的共享目录。 通过以上步骤,用户可以在Linux上构建一个有效的NFS服务器,实现跨平台的文件共享。这个过程对于系统管理员来说至关重要,特别是需要在多台机器之间共享数据或者在...

    Linux-AIX上NFS共享

    本篇文章将详细阐述在Linux和AIX上创建NFS共享、手动挂载远程共享路径以及如何设置系统启动时自动挂载的步骤。 1. **Linux或AIX上建立NFS共享** 在Linux上,NFS服务通常由`nfsd`守护进程提供。首先,你需要在...

    Linux-AIX上NFS共享2

    1. 自动mount:在smitty界面中选择“Filesystems” &gt; “Manage Filesystems”,然后添加NFS挂载点,配置服务器地址和共享目录。 2. 修改filesystems:同样在smitty中,选择“Filesystems” &gt; “Edit Filesystem ...

Global site tag (gtag.js) - Google Analytics