Gid einer bestimmten gruppe ändern

34

Ich möchte die Gruppen-ID einer bestimmten Gruppe ändern. Es gibt also möglicherweise Lösungen zum Ändern der GID einer Datei oder von Verzeichnissen. Aber das will ich nicht. Gibt es eine Möglichkeit, das zu tun?

mibzer
quelle

Antworten:

42

Die GID ist die primäre Kennung der Gruppe. Für das System ist eine andere GID eine andere Gruppe. Um die GID zu ändern, müssen Sie alle Stellen ändern, an denen diese GID verwendet wird.

Sie sollten vermeiden, die GID als signifikant zu behandeln, und stattdessen Gruppennamen verwenden. Sie können den Namen einer Gruppe mit einem einzigen Befehl ändern (unter Linux:) groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME.

Wenn Sie die GID jedoch wirklich ändern möchten, gehen Sie wie folgt vor:

  • Zunächst müssen Sie möglicherweise Benutzer in der Gruppe abmelden und Prozesse beenden, die diese Gruppe als effektive, echte oder gespeicherte Gruppe haben.
  • Ändern Sie den Eintrag in der Gruppendatenbank. Führen Sie unter Linux groupmod -g NEWGID GROUPNAME. Verwenden Sie auf anderen Systemen das Verwaltungstool dieses Systems oder, vigrfalls verfügbar, die entsprechenden Änderungen /etc/group.
  • Ändern Sie die Gruppe aller Dateien auf Ihrem System, die zur alten Gruppe gehören.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp löscht suid- und sgid-Flags und stellt diese wieder her.

  • Wenn Sie ein Archiv haben, das die alte GID verwendet, erstellen Sie es neu.
  • Wenn Sie eine Konfigurationsdatei oder ein Skript haben, das auf die alte GID verweist, aktualisieren Sie diese.
  • Starten Sie alle Prozesse neu, die die neue GID verwenden müssen.
Gilles 'SO - hör auf böse zu sein'
quelle
2
Schlagen Sie vor, chgrp -h ...statt chgrp .... Ohne wird die Gruppe -hdes Ziels eines relevanten Symlinks geändert.
Mark Plotnick
3
groupmodNehmen Sie einen Namen als Hauptargument für mich ...groupmod -g NEWGID GROUPNAME
Matt
29

Der einfachste Weg ist die Verwendung groupmod -g <NEW_GID> <groupname>

Eine andere Möglichkeit besteht darin, /etc/groupdirekt zu bearbeiten . Das dritte Feld in jeder Spalte ist die gid.

Wenn die geänderte Gruppe der Hauptgruppe eines Benutzers ist, /etc/passwdmüssen angepasst werden, auch: usermod -g <NEW_GID> <username>.

Jofel
quelle
Wirkt sich dies auch auf das GID von Dateien aus? Ich meine, gid of file und gid of group ändern sich gleichzeitig?
Mibzer
1
Nein. Dies ändert nur die ID der Gruppe. Dateien / Verzeichnisse behalten ihre (jetzt unbenannte) ID und müssen separat geändert werden.
Jofel
OK danke. Wenn ich also die (Datei-) gid in eine neue gid ändern möchte, muss ich einen anderen Befehl ausführen. Ist das richtig ? Das wäre besser, wenn es eine Möglichkeit gäbe, sowohl die gid der Gruppendatei als auch die gid der verwandten Dateien gleichzeitig zu ändern.
Mibzer
Ich habe den anderen Befehl zu meiner Antwort hinzugefügt. Es ist kein Problem, wenn temporär eine gid verwendet wird, die sich nicht in / etc / group befindet. Jeder Benutzer in der Gruppe muss sich erneut anmelden, um die neue GID zu erhalten.
Jofel
0

find / path -group foo -print0 | xargs -0 chgrp bar

jirib
quelle
wie gesagt das wird die gid der dateien ändern. Aber das meine ich nicht. Ich möchte die gid einer Gruppe ändern, nicht eine Datei.
mibzer
ok, ich war verwirrt, dann "vi / etc / group" :)
Jirib