我想更改特定组的组 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 栏