更改特定组的指导


34

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

Answers:


42

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
建议使用chgrp -h ...代替chgrp ...。如果不使用-h,则任何相关符号链接的目标都将更改其组。
Mark Plotnick

3
groupmod以名字为我的主要论点...groupmod -g NEWGID GROUPNAME
马特

29

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

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

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


这也会影响文件的安全吗?我的意思是,文件名和组名会同时更改吗?
mibzer 2012年

1
不会。这只会更改组的ID。文件/目录保留其(现在未命名)gid,需要单独更改。
jofel 2012年

好的谢谢。因此,如果我想将其(文件)gid更改为新的gid,则必须执行另一条命令。那正确吗 ?如果有办法同时更改启动文件的gid和相关文件的gid,那会更好。
mibzer 2012年

我在回答中添加了另一个命令。如果使用的临时gid不在/ etc / group中,这不是问题。组中的每个用户都必须重新登录才能拥有新的gid。
jofel 2012年

0

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


正如我所说,这将改变文件的范围。但这不是我的意思。我想更改组的Gid而不是文件。
mibzer 2012年

好的,我很困惑,然后是'vi / etc / group':)
jirib 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.