网络共享(Ftp,NFS,Samba)-------NFS

                    网络共享(FtpNFSSamba-------NFS

1. NFS的由来: NFS(Network File System)是一种分布式文件系统,允许网络中的安装不同操作系统(LinuxUnix)的计算机间共享文件和外设,所以它的通讯协定设计与主机及操作系统无关. 它是由SUN公司于1984年推出,使得可以本地机一样的使用另一台联网计算机的文件和外设。NFS在文件传送或信息传送过程中依赖于RPC协议

功能:当我们的NFS Server设定好共享目录后,其他的NFS Client端就可以将这个目录挂载到自己系统上面的某个挂载点(挂载点可以自定义),进入这个挂载点即可查看共享的文件。

缺陷:  a.明文传输

         b.只能用于LinuxUnix间操作系统中

           c.新版的NFS服务是置于系统内核中的。

2.RPCRPC, 远程过程调用 (remote procedure call)是能使客户端执行其他系统中程序的一种机制。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。常用于分布式C/S模型,发出请求的程序是客户程序,而提供服务的程序是服务器。

功能:NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些 端口 来传输文件,因此, NFS 的功能所对应的端口不固定,而是采用随机取用一些未被使用的小于 1024 的端口来使用,但客户端又不知道服务器端的相关端口,所以需要远程过程调用(RPC) 的服务,RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且返回给客户端,让客户端可以连结到正确的端口上去。当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并返回客户端正确的端口。

可以指定的静态端口:MOUNT_PORT=”4002”

                    STATD_PORT=”4003”

                    LOCKD_TCPPORT=”4004”

                    LOCKD_UDPPORT=”4004”

                    ROUOTAD_PORT=”4005”

                    STATD_OUTGOING_PORT=”4006”

3.NFSnfs-utils-1.0.6-65.EL4

  脚本nfsnfslock

  端口2049Tcp/Udpnfsd 其他半随机111Tcp/Udp,及其他的小于1024的随机端口。

配置文件:/etc/exports, /etc/sysconfig/nfs

进程:rpc.mounted  ß-------mount

       lockdß--------NLM

       rpc.statdß------NLM

NFS 主程序:nfs-utils
RPC
主程序:portmap

/var/lib/nfs/*tab
  在NFS服务器的登录档都放置到/var/lib/nfs/目录里面,在该目录下有两个比较重要的登录档,一个是etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个xtab则记录曾经连结到此NFS主机的相关客户端资料。

 /var/lib/nfs/rmtab
 状态文件,列出了挂接导出文件的远程客户机清单。
  

4.服务器端得应用及其规则

A安装nfs软件包yum list all|grep nfs

yum install nfs-utils.i386

B.启动RPC服务:service portmap startportmap不需要设定,只要直接启动就行,启动之后,会出现一个port 111sunrpc的服务

  查看RPC服务的状态service portmap status

rpcinfo -p localhost(查看当前主机的RPC状态)

启动nfs服务service nfs restart(开启nfs服务)

chkconfig nfs on(将其加入开机自启行列)

C编辑nfs的配置文件vi /etc/exports(默认为空)

假设为下面所示:

/var/guest 192.168.1.0/24(rw,async)

/var/ftp 192.168.0.0/24(rw,no_root_squash,sync)

保存退出!

注意下面是一些NFS共享的常用参数
  
 
ro: read-only
,只读访问权限

rw: read-write
,可读写的权限

sync:
资料同步写入到内存与硬盘

async:
资料会先暂存于内存中,而非直接写入硬盘(异步)

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:
和上面相对,不检查父目录权限

no_all_squash:
保留共享文件的UIDGID(默认)
   
all_squash
  不论登入 NFS 的使用者身份为何, 他的UIDGID映射匿名客户anonymous(通常也就是 nobody(nfsnobody)),适合公用目录。
      
root_squash 
  在登入NFS主机使用共享之目录的使用者如果是root时,那么这个使用者的权限将被映射成为匿名使用者,通常他的 UID GID 都会变成nobody(nfsnobody) 那个系统帐号的身份的权限;uidgid0变为65534.
      
no_root_squash         
  登入NFS主机使用共享目录的使用者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限!这个项目『极不安全』,不建议使用!
      
anonuid=xxx:
指定NFS服务器/etc/passwd文件中匿名客户的UID
      
anongid=xxx:
指定NFS服务器/etc/passwd文件中匿名客户的GID

D.此时我们不需重启服务,可以使用命令将其重新读取:

exportfs –a 

注意-a :全部挂载(或卸载和-u连用时)/etc/exports文件内的设置
-r
重新挂载/etc/exports里面的设置,此外,亦同步更新/etc/exports/var/lib/nfs/xtab 的内容!
-u
:卸载某一目录
-v
:在export的时候,将分享的目录显示到屏幕上

exportfs -arv重新挂载一次 /etc/exports的设置

  exportfs –auv全部卸载

E 此时我们可以自己先检查一下NFS服务器是否可以连接

 showmount –e localhost

  showmount -a localhost

注意: showmount [-ae] [hostname|IP]

-p :显示出所有的 port porgram 的信息;

参数:
-a
:这个参数是一般在NFS 服务器上使用,是用来显示已经挂载上本机nfs目录的客户机

-d:查看哪个目录已被挂载到NFS 服务器上。(一般也在NFS 服务器上使用)
-e
:显示主机的 /etc/exports 所共享的目录

     

5.客户端的配置及规则:

A当客户端访问服务器时我们需要首先建立挂载点

 Egmkdir  mnt

B.挂载共享目录

mount -t  nfs 192.168.1.0:/var/ftp mnt/

C.此时我们可以切换到挂载目录中查看共享目录

showmount –e IP(服务器的ip地址)

cd mnt

ls

如果是root用户,即可查看里面的文件,但是只读权限(规定为可读可写,为何为只读呢?

Reason:因为root_squash参数,没有规定时,都将root用户映射为匿名用户,将其uidgid0变为65534,权限缩减。除非声明声明no_root_squashroot用户登录时才可以保持共享目录中规定的权限。修改如下:

/var/guest  192.168.1.0/24(rw, no_root_squashasync)

6.案例:

1.     假如说服务器上有个用户natasha,并且他是/var/guest目录的所有者,即将目录的用户和组都改为natasha,假如natashauid2001,在客户机上有个natashamary两个用户,但natashauid2000maryuid2001,此时natasha将无法登录,而mary却可以查看(原因很简单,NFS是靠uidgid来识别用户的身份的。)

2.     同一目录针对不同范围开放不同权限

   # vi /etc/exports
/home/public  192.168.0.0/24(rw)    *(ro)

即将主机与网域分为两段(用空格隔开)此时当客户机处于192.168.0.0/24这个网段中时,针对这个被挂在的目录就具有可读可写的权限;而其他网段的客户机挂载目录后就只有可读权限。

3.     开放匿名登入的情况   

# vi /etc/exports

/home/linux  *.linux.org(rw,all_squash,anonuid=40,anongid=40)
#
如果要开放匿名,那么重点是all_squash,并且要配合anonuid

 

test.linux.org 登入这部 NFS 主机,并且在 /home/linux 写入文件时,该文件的所有人与所有群组,就会变成/etc/passwd 里面对应的UID40的那个身份的使用者

 

总结/etc/exports client的书写规则

  (1)单个主机
  可以用短名及完全限定名(QFDN),或者用IP地址,例如student1student1.test.com.cn或者192.168.10.1

 

  (2)Net-Group
  可以列出/etc/netgroup文件中或NFS网组映射中定义的整组主机。网组名以@开头。

  (3)通配符主机(*,?)
  .discuz.net *.  *.comsenz.com

*匹配零个或多个

:只匹配一个
  (4)掩码
  192.168.1.0/255.255.255.0

               

你可能感兴趣的:(Linux中常用的几种服务)