首页/系统/Linux 运维命令速查/chgrp 修改文件属组

chgrp 修改文件属组

chgrp 单独修改文件/目录的所属组,语法比 chown 更贴近只是换组的场景;-R 递归、--reference 参照复制。

Linux 运维命令速查系统更新于 2026-10-13

chgrp 是什么

chgrp 专门修改文件或目录的所属组,比 chown 更贴合「只换组」的场景,语法也更不容易写错。共享目录协作是最典型的用途:把目录及其内容统一改成某个团队的组,再配合目录上的继承位,让之后新建的文件自动属于这个组。批量操作时用查找配合执行的方式比逐条改更高效,先确认组名存在能避免产生大量无用报错。

基本信息

适用平台GNU/Linux、macOS(coreutils)
语法chgrp [选项] 组 文件...
常用选项-R 递归、--reference 参照某文件的属组
权限要求root,或文件属主且自身属于目标组
批量做法查找配合执行,一次传入多个文件
配套设置目录继承位让新文件自动继承组

典型使用场景

  • 把共享目录及其内容统一改成协作团队的组。
  • 迁移数据后统一修正属组,恢复原有权限模型。
  • 参照一个正确文件的属组批量修正其他文件。
  • 配合目录继承位,让新建文件自动属于团队组。
  • 排查权限问题时确认目录属组是否与预期一致。

常用写法

常用写法
getent group developers                                  # 先确认组名存在
chgrp -R developers /srv/shared                          # 递归修改属组
chgrp --reference=/srv/shared/index.html /srv/shared/README.md   # 参照复制属组
find /srv/shared -type d -exec chgrp developers {} +     # 批量修改目录属组
chmod g+s /srv/shared                                    # 设置继承位,新文件继承属组
ls -ld /srv/shared; ls -l /srv/shared | head             # 确认结果
find /srv/shared ! -group developers | head              # 反查未修正的文件

项目与做法对照

项目作用使用要点
-R 递归修改目录及内容范围大时先抽查,避免误改系统目录
--reference参照文件属组比手写组名更不容易出错
查找配合执行批量修改一次传多个文件,减少进程开销
组名检查确认组存在组名写错会产生大量报错
继承位让新文件继承组否则新文件仍属创建者的主组
反查校验确认修改结果用查找命令找出遗漏项
组名不存在时会报无效组名:如果在批量命令里使用,会一轮轮重试并产生海量错误输出,真正的失败被淹没;批量操作前先确认组名。
修改属组后共享目录还需要目录继承位,才能让新建文件自动继承团队组;否则新文件仍属于创建者的主组,权限问题会反复出现。
批量操作优先用查找配合执行并一次传入多个文件,比逐文件调用命令快得多,也能减少误操作的窗口。

易错点

  • 递归修改时把范围写成了上级目录甚至根目录,误改系统文件的属组,导致服务权限异常。
  • 组名写错导致批量命令产生海量错误输出,真正的失败信息被淹没。
  • 只改了属组却没有设置目录继承位,新文件仍属于创建者的主组,协作权限问题反复出现。
  • 脚本中不校验修改结果,误以为已经生效,实际部分文件因权限原因未被修改。

数据来源与参考

  • man 1 chgrp(coreutils)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌