NFS服务的权限和用户映射问题

NFS服务的权限和用户映射问题,第1张

简单说一下过程

这里着重讲一下用户映射的原理

  NFS服务虽然不具备用户身份验证的功能,但是NFS提供了一种身份映射的机制来对用户身份进行管理。当客户端访问NFS服务时,服务器会根据情况将客户端用户的身份映射成NFS匿名用户nfsnobody。nfsnobody是由NFS服务在系统中自动创建的一个程序用户账号,该账号不能用于登录系统,专门用作NFS服务的匿名用户账号。

  所谓用户身份映射,是指当客户端访问NFS服务器时,会自动被视作服务器中的nfsnobody用户,并按照该用户的权限设置去执行操作。但是并非所有的客户端都会被映射为nfsnobody用户,在/etc/exports配置文件中提供了以下选项,以决定是否将NFS客户端映射为nfsnobody用户:

  一般情况下,系统中除了为nfs创建的nfsnobdy用户外,还有系统创建的nobody用户(供大多数服务使用)。这两个用户在服务端和客户端都有。

  我们将客户端访问nfs服务器端的用户映射简化分为两种情况,一种是用户被压缩,一种不被压缩。(这里讲的压缩,有点映射的意思)

  当客户端使用用户zhangsan(666)连接服务端时(比如创建文件),实际传递的是其uid,当服务端接收到这个uid时,两种情况:

①、用户不被压缩:如果服务器端有这个uid,则显示该uid对应的(登录)名称,否则直接显示该用户uid(但该用户uid并不存在,所以在当再次请求查看该文件信息时,服务器在给用户返回信息之前,会检测到该uid并不存在,所以传给客户端时变成nobody的uid,所以在客户端查看文件时,其实显示所属主是nobody,而在服务器端显示的却是zhangsan的uid,因为文件毕竟是存在服务器上的)。也就是说当用户不被压缩的情况下,要想服务端和客户端显示相同的zhangsan,则必须服务端和客户端要同时拥有相同的zhangsan用户,且uid也要相同。

②、用户被压缩:那么客户端访问服务端时,不管客户端是以哪个用户的身份,最后都被压缩成指定的anonuid用户(默认是nfsnobody,当然可以修改配置的)。因为nfsnobody用户在服务端和客户端都有,压缩成该用户就一致起来了。当然我们可以修改配置指定要压缩成的用户id,但是同样要在两端都建立相同的该用户,否则,就会出现情况①中的,一边显示用户uid,一边显示nobody的现象。

所以,在实际应用中,如果nfs服务器当做数据服务器使用(比如存放图片视频等)的话,为了方便使用,使各个客户端都能简单存取数据, 一般采用将用户压缩成指定用户的方式,并且在服务器上将共享目录的所属主和所属组都设置成该用户及其主组。

五一节办公室要停电,机房虽有UPS,但也支撑不了8小时。

因生产环境有业务系统挂了办公室机房的NAS存储,故需要进行迁移,步骤记录如下:

先闲谈下技术-----------------------

NFS和samba的区别

samba是混合型网络中的共享服务,windows服务器可建samba服务,linux服务器也可建samba服务

nfs只面向unix、linux间的共享,linux服务器可建nfs服务(winodws系统也可以挂载nfs,就是有点不稳定)

NFS服务器上的操作--------------------------

nfs服务器操作系统版本:

[root@c7110 ~]# more /etc/system-release

CentOS Linux release 7.9.2009 (Core)

nfs服务器安装nfs服务

[root@c7110 ~]# yum -y install nfs-utils rpcbind

创建nfs目录,并授权

[root@c7110 ~]# mkdir /opt/nfs-test

[root@c7110 ~]# chmod 777 /opt/nfs-test

编辑nfs服务配置文件

[root@c7110 ~]# vi /etc/exports

内容如下:

/opt/nfs-test *(rw,root_squash,all_squash,sync)

重新加载nfs配置:

[root@c7110 ~]# exportfs -r

nfs服务设置开机启动

[root@c7110 ~]# systemctl enable rpcbind

[root@c7110 ~]# systemctl enable nfs

[root@c7110 ~]# systemctl enable nfs-lock

[root@c7110 ~]# systemctl enable nfs-idmap

启动nfs服务

[root@c7110 ~]# systemctl start rpcbind

[root@c7110 ~]# systemctl start nfs

[root@c7110 ~]# systemctl start nfs-lock

[root@c7110 ~]# systemctl start nfs-idmap

查看nfs服务启动后,所监听的端口信息:

[root@c7110 ~]# rpcinfo -p

linux服务器服务器上操作-------------------------------

业务服务器安装nfs软件客户端

[root@c7111 ~]# yum -y install nfs-utils

建立一个挂载目录

[root@c7111 ~]# mkdir /opt/test-m

挂载nfs服务器共享出来的目录

[root@c7111 ~]# mount -t nfs 10.x.x.10:/opt/nfs-test /opt/test-m/

查看下已挂载的nfs

[root@c7111 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 1.5G 0 1.5G 0% /dev

tmpfs 1.5G 0 1.5G 0% /dev/shm

tmpfs 1.5G 8.8M 1.5G 1% /run

tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup

/dev/mapper/centos-root 97G 2.3G 95G 3% /

/dev/sda1 1014M 171M 844M 17% /boot

tmpfs 297M 0 297M 0% /run/user/0

10.x.x.6:/opt/nfs-test 97G 4.1G 93G 5% /opt/test-m

经测试,数据可读可写,证明nas服务没有问题,于是进行数据同步,数据同步用rsync命令。

rsync -avp gdsz@10.87.5.6::nas_6 /mnt/guidang/ --password-file=/root/rsync_pass --bwlimit=100000

数据同步完,通知研发进行挂载切换。研发同事在测试时,发现文件属性中的uid及gid与原来的不一致,有些担心,于是又小完善了一下NFS服务。

编辑nfs服务配置文件

[root@c7110 ~]# vi /etc/exports

内容如下:

/opt/nfs-test *(no_all_squash,anonuid=600,anongid=600)

重新加载nfs配置:

[root@c7110 ~]# exportfs -r


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/494817.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-14
下一篇2023-06-14

发表评论

登录后才能评论

评论列表(0条)

    保存