首页 > 系统相关 >Linux连接(NFS)群晖NAS遇到的问题(最终选SetGID+umask)

Linux连接(NFS)群晖NAS遇到的问题(最终选SetGID+umask)

时间:2025-01-10 18:24:04浏览次数:1  
标签:文件 群组 umask NAS NFS test 权限 目录

 

说明:公司在寻找存储服务器,分布式太贵,后来找来厂家提供服务器试用一段时间,可以的话再买更高型号的来用,此文章记录整个过程,可能比较杂,等以后有时间再来整理吧。

需求:想要在服务器之间共同访问并操作这里的存储,并且还要再Windows上查看(需求又改了Windows上也会做增删改的操作。。)

实际情况分析:客户端类型:CentOS、Ubuntu、Windows(注:每台服务器上都有多个账号,这点很重要也是遇到的最主要的问题),根据需求只要Linux间实现权限统一并赋予对应账号的读写权限就好了,Windows端只读就好。

 操作:

1.1、设置并挂载存储

拿到服务器后,第一时间在群晖中配置 NFS作为服务器间的共享

(NFS(Network File System,网络文件系统)是Unix系统族中的一个分布式文件系统协议,广泛用于Linux和Unix操作系统之间共享文件和目录。跨平台性上不如SMB协议。)

NFS挂载:

挂载也很简单mount -t nfs <NAS的IP>:<群晖上对应的路径>  <Linux上的挂载路径>。

示例:mount -t nfs 192.168.123.22:/volume1/test /data/testnfs

根据后边的改动会改成(增加acls的管控:mount -t nfs -o acl 192.168.123.22:/volume1/test /data/testnfs

(注:如果没装nfs相关程序需要装下

sudo apt-get update sudo apt-get install nfs-common)

 

 

 

 

 

 

1.2、问题:好的,不出意外的话,这时候出现了问题~~ 

由于是多终端并且多账号,NFS权限管理不到这么细(NFS实现多服务器共同增删改查同一个文件的话,需要每台服务器上账号的uid是一样的(/etc/passwd文件中有,修改方法我写在下边,注意这里先不用改!!!)。

这里没办法实现uid相同 因为每台服务器上都有多个账号,最多做到gid相同,那就试下通过gid来控制权限吧!

1.3、修改用户GID

Linux修改用户UID和GID的方法:

1、查看用户的相关信息:

  cat /etc/passwd

2、停止该用户下所有的进程、取消此账号的所有挂载(避免不必要的报错)

  注:不清楚的话 此操作一定要向相关人员询问清楚!!!

  sudo kill -9 进程ID

  sudo umount 挂载路径 (可通过df -h来查看)

3、修改此用户的UID和GID

  #修改test用户的UID,由1000修改成1001
  sudo usermod -u 1001 test
  #修改test用户的GID,由1000修改成1001

  (注:-g会退出原来的“默认”群组,非必要建议使用-ag,这样会导致用户再创建文件时候,群组权限还是原来的群组这个我后边会说-

使用①设置SETGID位(针对组)、②使用默认ACL(访问控制列表)③调整umask值)

  sudo usermod -g 1001 test

  (usermod参数说明:-a:将用户添加到新的组中,而不会从其他组中移除用户;-g:群组id;-G:指定要添加的群组名称)

4、重新给test用户目录赋权限

  sudo chown -R test:test /home/test

5、其他问题,再次启动test用户下的进程发现没有权限or启动失败

  #需要清理/tmp临时目录下残留的test用户的进程文件

  cd /tmp;ll

  查看test的进程文件然后sudo rm掉

 

(原文:https://www.jianshu.com/p/94fdfc601495)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

因为之前没有做群组控制,所以需要重新添加群组,并把对应的账号加入进来,并针对群组进行权限控制。

1.4、设置群组GID

Linux修改群组的GID并将用户添加进群组:

1、创建群组:

  sudo groupadd nfstest

2、这时候多个服务器间的新群组nfstest的GID可能不一样,在每个服务器上统一修改下就好(可在/etc/group中查看群组GID):

  sudo groupmod -ag 1008 nfstest(将nfstest群组的GID改成1008:gtoupmod参数说明:-a参数表示将用户添加到新的组中,而不会从其他组中移除用户;-G参数指定要添加的用户组。)

  验证是否修改GID成功:/etc/group或者getent group nfstest

3、将test用户加入到nfstest群组

  sudo usermod -aG nfstest test

  验证test用户是否加入成功:groups test

 

4、更新与该GID关联的文件和目录权限(有需要的的话)

  sudo chown -R :1008 /data/testnfs/main

  (注:这里选择了在挂载目录下创建一个main目录进行权限配置!!)

 

 

 

 

 

 

 

 

 

 

 

上边做完一系列准备后,就可以开始方案选择(选取几个方案进行测试,最后根据其优缺点和实际需求来确定最终使用哪一个办法)

这里测试了:①设置SETGID位(针对组)、②使用默认ACL(访问控制列表)③调整umask值

2.1、对群组(GID)进行权限控制

修改完GID后,接下来重点是:将新添的文件全部继承父目录的权限

首先要做的是设置SERGID,②和③都需要用到①

2.1.1、给目录设置SetGID

(SetGID(Set Group ID on execution)位是一个特殊的权限位,当它被设置在一个目录上时,任何在这个目录中创建的文件或子目录都会继承这个目录的组所有权,而不是创建者的主组所有权。这有助于保持目录中文件的一致性,特别是在多用户环境中共享文件时非常有用。)

  sudo chmod g+s /data/testnfs/main

  或者 sudo chmod 2775 /data/testnfs/main(2-代表设置SetGID位)

 

(注:SetGID位对目录有效,可以使得新文件和子目录继承父目录的组归属,但不会改变文件和目录的权限

并且默认情况下,Linux不会让新文件完全继承父目录的所有权限(包括特殊权限如setuid, setgid))

 

 

 

 

 

 

2.2.2、使用ACL(访问控制列表)

1、ACL提供了更灵活的权限管理方式,可以为文件和目录设置更复杂的权限规则。例如,可以为目录设置默认的ACL,使得新文件和子目录自动继承这些权限:

  setfacl -m d:u:test:rwx /date/testnfs/main
  setfacl -m d:g:nfstest:rwx /date/testnfs/main

 

  [ d:表示设置默认的ACL规则。]

  [ u:username:rwx表示为用户username设置读、写、执行权限.。]

  [ g:groupname:rwx表示为组groupname设置读、写、执行权限。]

  [ 这样,在/path/to/directory目录下创建的新文件和子目录将自动继承这些ACL规则定义的权限。]

 

( 注:挂载时候需要加上 -o acl 参数(mount -t nfs -o acl 192.168.123.22:/volume1/test /data/testnfs)

 

 

 

 

 

 

 

 

 

 

2.2.3、调整umask值

1、umask(User Mask)是一个用于定义创建文件和目录时默认权限的掩码。它决定了新文件和目录的初始权限。

  [ umask值是一个八进制数,它指定了在创建文件或目录时应该从完全可访问权限中移除哪些权限。]

  [ 具体来说,umask 值会从新创建的文件或目录权限中去除相应位的权限。]

  ①查看umask值:

    umask

    查看创建的默认权限:umask -S

  ②设置umask值:

    umask 002

    [ 0表示所有者权限不受限。]

    [ 0表示组权限不受限制。]

    [ 2表示其他用户权限被限制为不写。]

    [ 新创建的文件默认权限将是664,新创建的目录默认权限将是775 ]

 

2、关于配置umask值:

  永久设置umask值,可以将其添加到用户的shell配置文件中(如.bashrc或/etc/profile)

    echo 'umask 022' >> ~/.bashrc

   ①umask值的影响

    1.文件的默认权限:新创建的文件默认具有666的权限(即读写权限对所有用户开放),但实际的权限会受到umask值的影响。umask值中的每一位都会从666中减去相应的权限。

    2.目录的默认权限:新创建的目录默认具有777的权限(即读写执行权限对所有用户开放),同样地,实际的权限也会受到umask值的影响umask值中的每一位都会从777中减去相应的权限。

   ②计算实际权限

    实际权限 = 默认权限 - umask值

    例如,如果umask值为022:

      -对于文件:666 - 022 = 644
        ·644表示所有者有读写权限,组和其他用户只有读权限。
      -对于目录:777 - 022 = 755
        ·755表示所有者有读写执行权限,组和其他用户只有读执行权限。

 

(注:umask定义了新创建文件和目录的默认权限。虽然它不能直接使新文件继承父目录的权限,但可以通过配置适当的umask来限制或开放新文件的默认权限。)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(注:特殊权限位‌:Linux还支持特殊权限位,如SUID(Set User ID)、SGID(Set Group ID)和Sticky Bit。这些权限位可以进一步影响文件和文件夹的权限继承和行为。)

3.1、其他(没试过不知道效果)

利用PAM模块(Pluggable Authentication Modules)
  对于需要更加动态地管理权限的情况,某些Linux发行版提供了通过PAM模块在用户登录时自动应用特定权限的能力。然而,这种方法较为复杂,通常不用于简单的权限继承需求。

3.2、方案选择

最终使用了SetGID+umask的方案来操作(但还是会有一些目前不了解的一些权限问题),等以后有时间在来优化吧。

(啊啊啊,,,改需求了,Windows也要增删改。。改回SMB共享了,不用NFS了,不过也学习到不少知识挺好~~)

 

写在最后:

#域控账号的还可以考虑这个:https://www.zhugh.com/synology-nas-nfs-kerberos-pei-zhi-yu-shi-yong/#toc_3

#无映射方式挂载:https://www.zhugh.com/synology-nfs-wu-ying-she-gua-zai-pei-zhi/

 

标签:文件,群组,umask,NAS,NFS,test,权限,目录
From: https://www.cnblogs.com/iSun520/p/18663534

相关文章

  • 欧拉OpenEuler使用nfs和rsync复制文件夹到新服务器.250109
    案例:服务器A是新服务器服务器B为老服务器需要将服务器B的/data/storage,拷贝到服务器A的/home/sync-data下一、服务器A新服务器配置nfs1.安装nfssystemctlstopfirewallddf-hmkdir-p/home/sync-datayuminstallnfs-utilssystemctlstatusnfs-serv......
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(8)水杯案例的对称与轴对称处理
    目录1序言2对称处理2.1模型处理 2.2网格划分、约束载荷及接触设置2.3计算结果3轴对称处理3.1对称与轴对称概念3.2轴对称问题的应用 3.2.1 创建分析案例3.2.2导入并处理模型3.2.3网格划分、约束载荷及接触设置3.2.4后处理计算结果1序言本章主要介......
  • Jira server即将停止维护,推荐一款开源平替工具-Kanass
    在我们日常的研发过程中,为了确保项目高效有序的完成,通常会使用一些项目管理工具如Jira、TAPD、禅道等。JIRAserver版本即将停止维护,推荐一款可以平替的项目管理工具-Kanass。1、产品简介Kanass(取中国喀纳斯谐音)是一款开源免费的项目管理工具,包含项目管理、项目集管理......
  • 神经架构搜索 NAS
    神经网络架构是指构成神经网络的层(Layers)、连接方式、激活函数和其它组件的组织结构。神经网络架构的设计对于模型的性能至关重要,因为它决定了模型如何学习和处理数据。以下是神经网络架构的一些关键组成部分:层的类型:神经网络由不同类型的层组成,如输入层、隐藏层和输出层。隐藏......
  • 《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker
    @目录4.Docker镜像4.1是什么4.1.1是什么4.1.2分层的镜像4.1.3UnionFS(联合文件系统)4.1.4docker镜像的加载原理4.1.5为什么docker镜像要采用这种分层结构呢4.2重点理解4.3docker镜像commit操作案例本人其他相关文章链接4.Docker镜像这一块主要讲解docker镜像的底层原理。......
  • 群晖NAS如何使用Synology Office实现远程多人同时在线编辑文档
    文章目录前言1.本地环境配置2.制作本地分享链接3.制作公网访问链接4.公网ip地址访问您的分享相册5.制作固定公网访问链接前言群晖NAS的SynologyOffice套件是一个功能强大的办公助手,支持多人同时在线编辑Word、Excel或PPT文档。你可以在办公室里轻松实现团队协......
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(5)分析结果解读
    1序言本章主要介绍实验结果与仿真结果对比的基本条件和其中需要注意的问题。2结果对比的基本要求1.应力奇异点应力计算结果无法准确判定;2.非应力奇异点网格精度与应力值的判定方法;3.位移结果与网格精度的关联性相对比较低。3L型支架案例分析基本操作:修改零件接触......
  • Linux挂载文件系统(NFS、CIFS)
      前两篇说到磁盘分区、逻辑卷相关的基础,所以这里说下挂载,顺道当做笔记。  其实之前开始博主刚接触linux的时候,就想,向移动硬盘,在windows下直接插上USB,就可以直接使用了,为啥LInux下这么麻烦,一会分区,一会格式化,还要挂载后才能使用。  现在想来,其实就是windows简化了这个过程......
  • 无人值守24小时直播!Docker、群晖NAS配置
     无人值守24小时直播!Docker、群晖NAS配置第一节.部署以Docker命令行和群晖NAS中docker部署AntMediaServer为例:Docker命令建立容器:markdown dockerrun--nameams-d--net=hostnibrev/ant-media-server:latestMarkdownCopy群晖图形化部署:打开群晖Do......
  • 告别“不安全”警告!群晖NAS一键SSL证书配置,免费SSL证书+自动更新+自动部署,太省心了!
    最近入手了一台群晖NAS,兴致勃勃地倒腾起来,买域名、部署容器,一切都准备就绪。然而,当我通过浏览器访问时,却看到了刺眼的“不安全”警告——因为没有SSL证书!作为一个对安全和隐私有追求的用户,这能忍吗?绝对不能忍!于是,我开始全网搜索如何为群晖NAS申请SSL证书。经过一番折腾,终于让......