我正在使用 Redhat/Centos 7。
目前我有一个名为 /lcldisk 的本地目录,用户使用网络帐户登录,这意味着当他们在 /lcldisk 下创建一个目录时,该目录归用户及其域组所有,因此归其部门所有。部门组不向任何组提供此目录的权限。
我正在尝试创建一个本地组,将 3 个用户放入其中,让该组拥有所有内容(包括 /lcldisk 在内的所有文件和文件夹)。我还希望每个新文件和文件夹都归该组所有,目录 = rwx,文件 = rw
mkdir /lcldisk
chmod 777 /lcldisk
用户
cd /lcldisk
mkdir johnnydepp
用户已经创建了文件夹和文件,大部分看起来像。
多年后,他们希望一些用户能够访问 /lcldisk 下的数据,无论是哪个用户,以防他们离开或发生其他情况。
groupadd ns_admGrp
usermod -a -G ns_admGrp bettywhite
chown -R :ns_admGrp /lcldisk
cd /lcldisk
chmod g+rwx /lcldisk/
find . -type d -exec chmod g+rwx {} \;
find . -type f -exec chmod g+rw {} \;
现在,如何保留每个用户的所有文件和文件夹以及每个目录,无论该用户和该组拥有这些权限的程度有多深?
我知道粘性位当设置保留组时,我仍然需要文件夹和文件权限。
我显然遗漏了这个难题的哪些部分?我是否需要研究 acl、umask 或其他内容。
答案1
对于大多数使用 POSIX ACL 的文件系统,在目录和所有子目录上设置带有组条目的“默认”ACL:
setfacl -R -m d:g::rwx /mydir
这适用于文件通过 setgid 位继承的指定组。对于自定义组,您当然可以使用[d:]g:mygroup:rwx
。
当新创建的文件继承此 ACL 时,它们将自动获得一个mask::rw
条目,从而屏蔽掉不必要的 +x 位。新创建的子目录将获得整个 +rwx。
没有自动的方法将默认 ACL 应用于现有项目(没有像 NTFS 那样的真正继承)。
答案2
您最好使用 ACL。
对于您来说,您需要做的是运行:
setfacl -m g:ns_admGrp:rwx -R /lcldisk
setfacl -m d:ns_admGrp:rwx -R /lcldisk
第一个命令将设置目录/文件的组权限,第二个命令将设置目录/文件的默认权限。
本页进一步阐述了该主题 -https://linuxman.co/linux-server/how-to-use-acl-in-linux/