说明:公司在寻找存储服务器,分布式太贵,后来找来厂家提供服务器试用一段时间,可以的话再买更高型号的来用,此文章记录整个过程,可能比较杂,等以后有时间再来整理吧。
需求:想要在服务器之间共同访问并操作这里的存储,并且还要再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 (注:-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参数说明: 验证是否修改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
[ 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表示其他用户权限被限制为不写。] [ 新创建的文件默认权限将是
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
(注: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/