更改特定组的 gid

mib*_*zer 40 group

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

Gil*_*il' 49

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 {} \;
    
    Run Code Online (Sandbox Code Playgroud)
  • chgrp 清除 suid 和 sgid 标志,恢复它们。

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

  • 建议使用 `chgrp -h ...` 而不是 `chgrp ...`。如果没有 `-h`,任何相关符号链接的 *target* 将更改其组。 (4认同)
  • `groupmod` 以名称作为我的主要参数... `groupmod -g NEWGID GROUPNAME` (3认同)

jof*_*fel 32

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

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

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

  • 不会。这只会更改组的 ID。文件/目录保持它们(现在未命名)的 gid 并且需要单独更改。 (2认同)