NFS
一、Network file system 简称NFS,用与linux 与各种like unix主机之前进行share files,可称为RPC Server .客户端和服务端在使用NFS时都需启动RPC服务。
客户端有NFS文件请求需求时向服务端请求数据的流程:
1)客户端向服务器的RPC(port 111)发出NFS文件存取功能的询问请求
2)服务器端找到已注册的对应的NFS daemon端口后告知客户端
3)客户端了解了正确的端口后,就可直接跟NFS daemon联系
二、运行NFS需要启动的RPC daemons:
1) rpc.nfsd 管理client端能入登入
2) Rpc.mountd 管理NFS文件系统,包括-XXX XXX XXX等所有者权限以及/etc/exports里的各类权限。
3) Rpc.lockd和rpc.statd,在客户端发生同时使用同一文件时,他们分别用于管理文件的锁定和检查文件的一致性,在NFS中为非必须,可以没有,此外,这个功能需要在服务器和和客户端同时启用才能生效
三、NFS本身没有身份认证机制,所以当客户端访问服务端的时候会把客户端用户的uid 、gid和服务端/etc/passwd /etc/group里面的uid 、gid做对比,然后以他们uid 、gid都相同的那个用户身份来读取服务端的文件系统的。这里有几种情形:
(1)NFS server与NFS client刚好有相同的帐号和组,此时直接以那个用户身份访问NFS服务器
(2)NFS server与NFS client UID相同但用户名不相同,因为uid相同,所以该用户可以以那个与其UID相同的那个帐户的身份访问服务端。
(3)NFS server没有客户端的UID,此时访问者的身份会被压缩成匿名者,一般NFS会把65534作为其UID,早期待linux把65534这个帐户称为nobody,cent OS一般取名为nfsnobody.
(4)如果用户身份为root,默认情况下root帐户会被压缩成匿名者。总之客户端能做什么事情取决于其UID、GID,另外客户端存取服务端文件系统还需以下二个权限:1、NFS服务器开放的权限(/etc/exports)
2、实际的文件目录权限
四、NFS需要的二个软件:NFS主程序: nfs-utils
RPC主程序:portmap
(1)/etc/exports NFS主要配置文件
/usr/sbin/exportfs 维护NFS共享资源的命令
/var/lib/nfs/etab 记录NFS共享出来的目录的完整权限设置值
/var/lib/nfs/xtab 记录曾经连到此NFS主机的相关客户端数据
(2)Vim /etc/exports
/tmp/test 192.168.1.0/24(ro) localhost(rw) *.cbdoffice.local(ro,sync)
共享目录 开放网段(权限) 开放本机(权限)开放域内主机(权限)
注意使用主机名称时必须保证在/etc/hosts或DNS里可以找到,即能找到IP,别外主机 名称支持通配符,*或?
(3)权限参数
ro:read-only,只读权限
rw:read-write,可读写权限
Sync:数据同步写入到内存于硬盘中
Async:数据会暂时存于内存中,而非直接写入到硬盘中
No_root_squash:登入NFS的用户如果为root用户,那么对于共享目录来说,他说具有root权限,此项极不安全,一般不使用
Root_squash:压缩root身份用户为匿名者
All_squash:压缩所有登入NFS服务器的用户为匿名者
Anonuid:把登入用户压缩成UID为anonuid=XXX的用户,把登入用户压缩成指定的用户
Anongid:同上,anongid=XXX
五:portmap启动端口为111
NFS启动端口为2049
其它rpc.daemons启动的端口为随机产生,需向portmap注册。
Rpcinfo命令
Rpcinfo [-P] [ip|hostname] 显示所有port和program
Showmount命令
Showmount [-ae] [ip|hostname]
-a 显示目前主机与客户端联机共享状态
-e 显示某台主机/etc/exports所共享的目录数据,showmount -e localhost
Exportfs [-aruv]
-a 全部挂载或卸载/etc/exports里的共享目录
-r 重新挂载或卸载
-u 卸载某一目录
-v 显示详细目录所对应的权限
Showmount -e 192.168.0.2
Mkdir /mnt/nfs
Mount -t nfs 192.168.0.2:/home/linux /mnt/nfs
另外为了安全,使挂载过来的partion不具有危险的SUID文件,不安全的可执行文件,设备文件等可在挂载时设置安全参数。
Mount -f nfs -o nosuid,noexec,nodev,rw localhost /mnt/nfs
开机挂载:
Vim /etc/fstab
192.168.0.2:/home/linux /mnt/fstab nfs nosuid,noexe,nodev,rw
六:practice
1、开放/home/public,只限定172.16.3.0/24这个网段可读写,其它人均只读
/home/public 172.16.3.0/24(rw) *(ro)
/home/test 172.16.3.1(rw)
/tmp *(rw,no_root-squash)
/home/linux *.cbdoffice.local(rw,all_squash,anonuid=100,anongid=100)
开放匿名,配合all_squash指定特定的UIDGID用户