root的映射是nfsnobody
NFS:网络文件系统,主要是通过网络(一般情况是局域网)让不同主机的系统直接可以共享文件或目录。NFS客户端通过挂载的方式将NFS服务器端共享的目录挂载到客户端的某个挂载点下。服务器端看共享目录就相当于看自己的目录一样,而实际上是看的远端的NFS服务器。
客户端请求过程:
1、用户在NFS客户端上发出存取NFS文件的请求,这时NFS客户端的RPC服务(rpcbind)就会通过网络向NFS服务器端的rpc服务(rpcbind)的111端口发出NFS文件存取功能的询问请求。
2、服务器端的RPC服务找到对应的已注册的NFS端口后,通知客户端的RPC服务。
3、此时客户端获得了正确的端口,并与NFS daemon(进程)联机存取数据
4、客户端把数据存取成功后,返回前端访问程序,告诉用户存取结果。
对服务器端配置:
关闭防火墙以及SElinux:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# vim /etc/sysconfig/selinux
设为disbaled
然后设置服务器端主机名并重新登陆:
[root@localhost ~]# hostnamectl set-hostname nfs01
[root@localhost ~]# su -l
Last login: Sun Sep 22 22:30:49 CST 2019 from 192.168.15.1 on pts/0
[root@nfs01 ~]#
查看rpcbind和NFS服务是否下载并下载:
[root@nfs01 ~]# rpm -qa nfs-utils rpcbind
[root@nfs01 ~]# yum install -y nfs-utils rpcbind
查看命令属于那个包:
[root@nfs01 ~]# rpm -qf `which showmount`
启动NFS服务并设为开机自启动
[root@nfs01 ~]# systemctl start rpcbind————放在nfs之前启动,要不然会导致nfs启动失败。
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# systemctl enable nfs
[root@nfs01 ~]# systemctl enable rpcbind
查看配置文件:
[root@nfs01 ~]# ll /etc/exports
[root@nfs01 ~]# vim /etc/exports
/data 192.168.15.0/24(rw,sync)
共享目录 开放网段 (权限)
重启服务(必须):
[root@nfs01 ~]# systemctl reload nfs
创建共享目录并修改:
[root@nfs01 ~]# mkdir /data
[root@nfs01 /]# chown -R nfsnobody:nfsnobody /data/
客户端也需要下载服务并启动:
然后直接进行挂载:
[root@web01 ~]# mount 192.168.15.138:/data /mnt/
[root@nfs01 data]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 22 23:27 a
-rw-r--r--. 1 nfsnobody nfsnobody 0 Sep 22 23:27 b
此处,因为a是服务器端的创建的,b是客户端创建的。
设置为开机自挂载:
有两种方式:
1、将挂载的命令写进/etc/rc.local中。
缺点:偶尔开机挂载不上,工作中除了开机自启动配置,还要对是否挂载进行监控。
echo “mount -t nfs 192.168.15.138:/data /mnt” >> /etc/rc.local
-t:指定文件系统类型。
如果写在rc.local中不会存在服务端没有启动导致客户端启动不起来这种情况,但是如果客户端在加载rc.local文件之前有需要加载共享文件中本机系统启动所需要的文件,也能导致系统启动失败。
2、挂载到/etc/fstab中。
192.168.15.138:/data /mnt nfs defaults 0 0
服务端没有启动(或者宕掉了),直接启动客户端,会导致客户端系统启动加载fstab文件失败(因为加载fstab文件中有服务端地址但是网络不通),导致系统启动失败。
参数说明:
ro:只读权限(客户端不能创建文件,但是可以编辑已存在文件)
[root@web01 mnt]# touch b
touch: cannot touch ‘b’: Read-only file system
async:异步写入,和同步写入的区别是:同步是一个一个排队带着U盘拷文件,异步是全部把U盘放在这你们人走,然后我给你们一个一个拷。
root_squash:
- 使用这个参数意味着root在共享目录里创建的任何文件都不受保护,任何人(所有用户都可以读取,修改,删除)。
no_root_squash:
- 使用这个参数意味着不对root进行降低身份的操作,也就是说root在共享目录里创建的文件的属主、属组仍旧为root(不能被普通用户修改和删除)。
- 非root用户同root_squash一样,并不降低权限。
all_squash:
- 使用这个参数意味着对所有访问NFS共享目录的用户进行降低身份的操作。也就是说,所有用户只要在共享目录里创建文件,那么文件的属主属组就是默认情况下的nfsnobody。
- 在这个模式下,任何nfs客户端的任何访问用户都可以对共享目录里的任何文件进行查看,修改,删
除操作
这几项是设置root在共享目录中创建的文件对于客户端用户的权限限制。
如果想要用户对文件不能修改,则设置为ro权限。
ceph: 分布式存储
/etc/hostname:修改主机名
rpm -qf 文件名:查看文件来源于哪个软件包
rpm -qf ` which showmount``