0

0

Linux目录权限继承规则_setgid实践解析【教程】

冰川箭仙

冰川箭仙

发布时间:2026-01-01 12:53:02

|

742人浏览过

|

来源于php中文网

原创

mkdir创建的子目录未继承父目录组,是因为默认由进程主组决定;只有父目录设置了setgid位(权限中为小写s),子目录才会强制继承其组ID且递归生效。

linux目录权限继承规则_setgid实践解析【教程】

Linux 目录的权限继承不是自动发生的,setgid 是唯一能实现“新建文件/子目录自动继承父目录所属组”的机制,但它对文件和目录的行为不同,且不控制所有权或读写权限本身。

为什么 mkdir 创建的子目录没继承父目录的组?

默认情况下,新创建的目录所属组由进程的 primary group 决定(通常是用户登录组),与父目录无关。只有父目录设置了 setgid 位(即权限中的 sS),内核才会在创建子目录时强制将其组 ID 设为父目录的组 ID。

  • setgid 对目录有效:子目录自动继承父目录的 group,且自身也带上 setgid 位(递归生效)
  • setgid 对普通文件无效:新建文件不会继承父目录组,且其 setgid 位会被内核自动清除(除非是可执行文件)
  • 必须用 chgrp 先改父目录所属组,再用 chmod g+s 设置 setgid,顺序不能反

chmod g+schmod 2755区别在哪?

两者效果一致,但表达方式不同:g+s 是符号模式,明确表示“给 group 加 setgid 位”;2755 是八进制模式,其中首位 2 就代表 setgid。注意:如果目录已有 rwxr-xr-x(即 755),加 setgid 后显示为 rwxr-sr-x(小写 s);如果 group 没有执行权(如 744),则显示为 rwxr-Sr--(大写 S),此时 setgid 实际不生效。

  • 小写 s = group 有 x 权限 + setgid 已启用
  • 大写 S = group 无 x 权限,setgid 被设置但被忽略
  • ls -ld /path 查看,确认是小写 s 才算真正生效

如何验证 setgid 是否起作用?

不能只看父目录权限,必须实测新建项的所属组。普通用户在该目录下创建内容后,用 ls -l 观察结果:

XPaper Ai
XPaper Ai

AI撰写论文、开题报告生成、AI论文生成器尽在XPaper Ai论文写作辅助指导平台

下载
mkdir /shared
chgrp devteam /shared
chmod g+s /shared
# 切换到非 devteam 成员用户执行:
touch /shared/testfile
mkdir /shared/testdir
ls -ld /shared/testfile /shared/testdir

预期输出中:testdir 的组应为 devteam,且权限含 rwxr-sr-xtestfile 的组通常仍是创建者主组(除非系统启用了 bsdgroups 模式或设置了 umask 002 配合 setgid)。

  • 文件是否继承组,取决于 umask 和内核策略:Linux 默认不继承,但若 umask002 且父目录 setgid,新文件组可能碰巧一致(非 guaranteed)
  • 子目录一定继承,这是 POSIX 明确要求的行为
  • 如果测试失败,先检查 mount 是否带 noexecnosuid(部分文件系统会禁用 setgid

真正容易被忽略的是:即使 setgid 设置正确,如果用户不属于目标组,chgrp 会失败;而一旦父目录组设错,后续所有继承都无效——所以先确认 getent group devteam 能查到成员,再动手改权限。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1345

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

700

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

773

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

571

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

544

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

296

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

374

2023.07.25

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号