Linux - 目录管理之群组与权限继承
Posted 王万林 Ben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux - 目录管理之群组与权限继承相关的知识,希望对你有一定的参考价值。
Linux - 目录管理之群组与权限继承
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、需求
项目目录下,创建的文件或目录,需要继承为父目录
的群组
与权限
。
二、解决
继承父目录的群组
执行chmod g+s <FOLDER>
或chmod +2000 <FOLDER>
命令,随后在<FOLDER>
目录下新建的
- 文件,都继承
<FOLDER>
的群组; - 文件夹,都继承
<FOLDER>
的群组,并继承set-group-ID bit
。
效果如下
[thesre@centos8 test_set-group-ID]$ ls -ld /home/thesre/test_set-group-ID
drwxrwxr-x 2 thesre stapusr 4096 Jun 2 21:09 /home/thesre/test_set-group-ID
[thesre@centos8 test_set-group-ID]$ mkdir subdir01; touch subfile01 # 创建测试文件夹与文件
[thesre@centos8 test_set-group-ID]$ ls -ld subdir01 subfile01 # 查看,未继承父目录群组,是主群组thesre
drwxrwxr-x 2 thesre thesre 4096 Jun 2 21:10 subdir01
-rw-rw-r-- 1 thesre thesre 0 Jun 2 21:10 subfile01
[thesre@centos8 test_set-group-ID]$
[thesre@centos8 test_set-group-ID]$ chmod +2000 /home/thesre/test_set-group-ID # 加上set-group-ID bit
[thesre@centos8 test_set-group-ID]$ ls -ld /home/thesre/test_set-group-ID # 检查已设置成功
drwxrwsr-x 3 thesre stapusr 4096 Jun 2 21:10 /home/thesre/test_set-group-ID
[thesre@centos8 test_set-group-ID]$ mkdir subdir02; touch subfile02 # 创建测试文件夹与文件
[thesre@centos8 test_set-group-ID]$ ls -ld subdir02 subfile02 # 查看,已继承父目录群组stapusr
drwxrwsr-x 2 thesre stapusr 4096 Jun 2 21:11 subdir02
-rw-rw-r-- 1 thesre stapusr 0 Jun 2 21:11 subfile02
[thesre@centos8 test_set-group-ID]$
[thesre@centos8 test_set-group-ID]$ ls -al
total 16
drwxrwsr-x 4 thesre stapusr 4096 Jun 2 21:11 .
drwx------ 7 thesre thesre 4096 Jun 2 21:08 ..
drwxrwxr-x 2 thesre thesre 4096 Jun 2 21:10 subdir01
drwxrwsr-x 2 thesre stapusr 4096 Jun 2 21:11 subdir02
-rw-rw-r-- 1 thesre thesre 0 Jun 2 21:10 subfile01
-rw-rw-r-- 1 thesre stapusr 0 Jun 2 21:11 subfile02
继承父目录的权限
通过配置ACL,来使得子文件(夹)继承父目录权限
[thesre@centos8 ~]$ mkdir test_facl
[thesre@centos8 ~]$ cd !$
cd test_facl
[thesre@centos8 test_facl]$ ls
[thesre@centos8 test_facl]$ ls -al
total 8
drwxrwxr-x 2 thesre thesre 4096 Jun 2 21:38 .
drwx------ 8 thesre thesre 4096 Jun 2 21:38 ..
[thesre@centos8 test_facl]$ setfacl -b . # 清理可能存在的ACL配置
[thesre@centos8 test_facl]$ getfacl . # 查看ACL
# file: .
# owner: thesre
# group: thesre
user::rwx
group::rwx
other::r-x
[thesre@centos8 test_facl]$ setfacl -R -d -m o::- . # 设置ACL的other默认值
[thesre@centos8 test_facl]$ setfacl -R -d -m g::rwx . # 设置ACL的group默认值
[thesre@centos8 test_facl]$ getfacl . # 查看ACL
# file: .
# owner: thesre
# group: thesre
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::---
[thesre@centos8 test_facl]$ mkdir subdir01 # 创建文件夹
[thesre@centos8 test_facl]$ touch subfile01 # 创建文件
[thesre@centos8 test_facl]$ ls -ld subdir01 subfile01 # 查看权限,可以看到已生效:文件与文件夹权限均为ACL定义的。
drwxrwx---+ 2 thesre thesre 4096 Jun 2 21:40 subdir01
-rw-rw---- 1 thesre thesre 0 Jun 2 21:41 subfile01
[thesre@centos8 test_facl]$ getfacl subdir01 # 查看子文件夹的ACL继承情况
# file: subdir01
# owner: thesre
# group: thesre
user::rwx
group::rwx
other::---
default:user::rwx
default:group::rwx
default:other::---
[thesre@centos8 test_facl]$ getfacl subfile01 # 查看文件的ACL继承情况
# file: subfile01
# owner: thesre
# group: thesre
user::rw-
group::rw-
other::---
总结
提示:这里对文章进行总结。
参考资料
http://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html //GNU网站介绍
https://www.stigviewer.com/stig/ibm_aix_7.x/2020-02-24/finding/V-91593 //mount选项打开或关闭设置set-group-ID bit的选项nosuid
(此项关于安全)。
https://man7.org/linux/man-pages/man5/acl.5.html //acl扩展控制列表的详细介绍
https://unix.stackexchange.com/a/1315
https://unix.stackexchange.com/a/331167
https://serverfault.com/a/708163 //这篇thread提到ACL或ZFS文件系统,都可以实现权限的继承
https://linux.die.net/man/8/mount //mount选线打开或关闭ACL的支持noacl
以上是关于Linux - 目录管理之群组与权限继承的主要内容,如果未能解决你的问题,请参考以下文章