NFS服务器:? ? ??
??NFS服务,是允许网络中的计算机之间通过TCP/IP网络共享资源,主要在Lunix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样(共享使用服务器文件)。
????????NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。
与FTP的区别在于:NFS是将共享的文件创建出来,然后客户端把服务器的目录挂载到本地的目录上,而访问的挂载目录就相当于访问服务器的的共享目录
NFS服务器文件配置:
//在服务端上配置服务需要的插件(rpcbind和nfs)
[root@localhost ~]# yum install rpcbind
[root@localhost ~]# yum install nfs-utils
//nfs-utils提供NFS服务
//rpcbind则是提供支持NFS服务的端口号
//nfs的主配置文件在/etc/export下
[root@lxb ~]# vim /etc/exports
//初始情况下,该文件为空文件
而文件可以配置的格式为:
共享目录文件(权限) 主机名(权限)
共享的目录文件:
是指服务器共享的目录,而这个共享的目录在客户端上的具体操作权限取决于服务端上改文件的具体权限
主机名:
①完整的IP或者是网段,如172.24.8.128或172.24.8.0/24或172.24.8.128/255.255.255.0
②也可以使用主机名,但主机名必须要在/etc/hosts内,存在映射关系(ip -> 主机名)
③或可以使用DNS域名解析解析出对应的IP地址(有可以解析这个域名的DNS服务器)
④还可以用 * 来代表所有主机(网络的缺省地址0.0.0.0/0)
文件读取的权限: ro/rw
ro:只读 rw:读写 //但是最终能否读写,还是与文件系统的rwx有关
no_root_squash / root_squash 默认为root_squash
如果客户端在共享目录里创建的文件的所属者和所属组是root用户和root组,那么显示文件的属主和属组时有以下两种情况:
no_root_squash --- 文件的所属者和所属组是root用户和root组
root_squash --- 将root用户和组映射为匿名用户和组(默认)
all_squash / no_all_squash 默认为no_all_squash
? all_squash --- 客户端所有用户创建文件时,客户端会将文件的用户和组映射为匿名用户和组
no_all_squash --- 客户端普通用户创建的文件的UID和GID是多少,服务端就显示为多少(默认)
anonuid= anongid=
将文件的用户和组映射为指定的UID和GID,若不指定默认为 65534 ---> (nfsnobody)
//而在客户端上需要使用nfs-untils的showmount -e 功能
此时会显示服务器的共享状态
//此时需要通过挂载然后,才能对共享文件操作
NFS属性练习:
服务器创建两个共享文件,一个只读,另一个读写:
//服务器配置共享文件/nfs/{shared,shared2}
[root@lxb ~]# mkdir -pv /nfs/{shared,shared2}
[root@lxb ~]# vim /etc/exports
/nfs/shared2 *(ro)
/nfs/shared *(rw)
//此时查看客户端
[root@localhost ~]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared *
/nfs/shared2 *
//客户端挂载文件
[root@localhost ~]# mount 192.168.220.234:/nfs/shared /guazai1
[root@localhost ~]# mount 192.168.220.234:/nfs/shared2 /guazai2
//此时在客户端创建文件需要服务器权限
[root@lxb nfs]# chmod o+w /nfs/shared
//创建文件
[root@localhost hh]# vim 8
[root@localhost hh]# ll
-rw-r--r--. 1 nobody nobody 4 Dec 23 21:18 8
//此时文件为默认匿名,但是在用户lxb下创建就是本人
[root@localhost hh]# ll
-rw-rw-r--. 1 lxb lxb 6 Dec 23 21:08 7
//如果需要修改,则需要在服务器修改为:
[root@lxb nfs]# vim /etc/exports
/nfs/shared *(rw,no_root_squash)
//重启服务,并在客户端上查看
[root@localhost hh]# vim 9
[root@localhost hh]# ll
-rw-r--r--. 1 root root 7 Dec 23 21:32 9
//对于ro权限的挂载目录,无论在服务器怎么给权限,都无法在客户端进行文件操作
?设置指定用户名映射:
①
#开放/nfs/upload目录,该目录为192.168.220.0/24网段的主机的数据上传目录,
#并将所有该网段主机上传文件的所属者和所属组映射为nfs-upload,其UID和GID为2001
//第一步配置文件
[root@lxb tom]# cat /etc/exports
/nfs/upload 192.168.220.0/24(rw,anonuid=2001,anongid=2001)
//重启服务,并在服务器上查看挂载情况
[root@lxb tom]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared *
/nfs/shared2 *
/nfs/upload 192.168.220.0/24
//此时去客户端查看挂载情况,并挂载到客户端
[root@localhost /]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared *
/nfs/shared2 *
/nfs/upload 192.168.220.0/24
[root@localhost /]# mount 192.168.220.234:/nfs/upload /guazai3
//在客户端创建文件
[root@localhost /]# cd guazai3
[root@localhost guazai3]# vim 1
[root@localhost guazai3]# ll
total 4
-rw-r--r--. 1 2001 2001 5 Dec 23 22:27 1
//此时发现文件的所属人和所属组为2001
//原因: 服务端固定的uid和gid为2001 ,在客户端没有产生对应映射的uid和gid
//此时在服务端或客户端创建uid与gid为2001的nfs-load
//会发现此时组和主为nfs-load创建的文件
[root@lxb nfs]# cd /nfs/upload/
[root@lxb upload]# ll
总用量 4
-rw-r--r--. 1 nfs-load nfs-load 5 12月 23 22:27 1
②
#将/home/tom(该目录为uid=1111,gid=1111的tom用户的家目录)
#仅共享给192.168.220.234这台主机上的jerry用户,jerry对该目录具有访问、新建和删除文件的权限
[root@lxb nfs]# vim /etc/exports
/nfs/shared2 *(ro)
/nfs/shared *(rw,no_root_squash)
/nfs/upload 192.168.220.0/24(rw,anonuid=2001,anongid=2001)
/nfs/tom 192.168.220.132(rw,anonuid=1111,anongid=1111)
//此时要注意!!!需要先设置 /nfs/tom 192.168.220.132(rw),并挂载后,
//再去附加anonuid=1111,anongid=1111 ,否则会存在无法读取的问题!!!
//挂载重启服务
[root@lxb tom]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared *
/nfs/shared2 *
/nfs/upload 192.168.220.0/24
/nfs/tom 192.168.220.132
[root@localhost guazai3]# mount 192.168.220.234:/nfs/tom /guazai4
//此时再去附加anonuid=1111,anongid=1111
//此时在客户端创建用户tom和tom组
[root@localhost guazai4]# useradd tom -u 1111
[root@localhost guazai4]# groupadd tom -g 1111
[root@localhost guazai4]# usermod -u 1111 -g 1111 tom
//最后创建文件查看
[root@localhost guazai4]# vim 1
[root@localhost guazai4]# ll
total 4
-rw-r--r--. 1 tom tom 6 Dec 23 22:56 1
//再去创建jerry用户
[root@localhost guazai4]# useradd jerry
//给jerry一个acl权限/把jerry加入到tom组,并设置这个文件的770权限
//给jerry的acl权限
[root@localhost guazai4]# setfacl -m u:jerry:rwx /guazai4
setfacl: /guazai4: Operation not supported
[root@localhost guazai4]# su jerry
[jerry@localhost guazai4]$ vim 2
[jerry@localhost guazai4]$ ll
total 8
-rw-r--r--. 1 tom tom 6 Dec 23 22:56 1
-rw-rw-r--. 1 jerry jerry 6 Dec 23 23:00 2
|