更改特定组的gid

更改特定组的gid

我想更改特定组的组 ID。有很多解决方案可以更改文件或目录的 gid。但这不是我想要的。有没有办法做到这一点?

答案1

GID 是组的主要标识符。对于系统来说,不同的GID就是不同的组。因此,要更改 GID,您必须修改使用该 GID 的所有位置。

您应该避免将 GID 视为重要的,而应使用组名称;您可以使用单个命令更改组的名称(在 Linux 上groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME:)。

但是,如果您确实想更改 GID,请按以下方法操作:

  • 首先,您可能需要注销该组中的用户,并终止将该组作为有效、真实或已保存组的进程。
  • 更改组数据库中的条目。在 Linux 上,运行groupmod -g NEWGID GROUPNAME.在其他系统上,使用该系统的管理工具(vigr如果可用)或/etc/group根据需要进行编辑。
  • 更改系统上属于旧组的所有文件的组。

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp 清除 suid 和 sgid 标志,然后恢复它们。

  • 如果您有任何使用旧 GID 的存档,请重建它。
  • 如果您有任何引用旧 GID 的配置文件或脚本,请更新它。
  • 重新启动所有必须使用新 GID 的进程。

答案2

最简单的方法是使用groupmod -g <NEW_GID> <groupname>

另一种方法是直接编辑/etc/group。每列中的第三个字段是 gid。

如果更改的组是用户的主组,/etc/passwd也需要进行调整:usermod -g <NEW_GID> <username>

答案3

查找 /path -group foo -print0 | xargs -0 chgrp 栏

相关内容