Changer le gid d'un groupe spécifique

34

Je voudrais changer l'identifiant du groupe d'un groupe spécifique. Il existe donc une solution pour changer le gid d'un fichier ou de répertoires. Mais ce n'est pas ce que je veux. Y-a-t-il un moyen de faire ça?

mibzer
la source

Réponses:

42

Le GID est l'identifiant principal du groupe. En ce qui concerne le système, un GID différent est un groupe différent. Donc, pour changer le GID, vous allez devoir modifier tous les endroits où ce GID est utilisé.

Vous devez éviter de traiter le GID comme significatif et d’utiliser des noms de groupe; vous pouvez changer le nom d'un groupe avec une seule commande (sous Linux:) groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME.

Cependant, si vous voulez vraiment changer le GID, voici comment:

  • Tout d'abord, vous devrez peut-être déconnecter les utilisateurs du groupe et supprimer les processus qui ont ce groupe comme groupe effectif, réel ou enregistré.
  • Modifier l'entrée dans la base de données du groupe. Sous Linux, lancez groupmod -g NEWGID GROUPNAME. Sur d'autres systèmes, utilisez l'outil d'administration de ce système ou, le vigrcas échéant, ou modifiez- /etc/grouple, le cas échéant.
  • Modifiez le groupe de tous les fichiers de votre système appartenant à l'ancien groupe.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp efface les drapeaux suid et sgid, rétablit ceux-ci.

  • Si vous avez des archives qui utilisent l'ancien GID, reconstruisez-les.
  • Si vous avez un fichier de configuration ou un script faisant référence à l'ancien GID, mettez-le à jour.
  • Redémarrez tous les processus qui doivent utiliser le nouveau GID.
Gilles, arrête de faire le mal
la source
2
Proposer d'utiliser chgrp -h ...au lieu de chgrp .... Sans cela -h, la cible de tout lien symbolique pertinent verra son groupe modifié.
Mark Plotnick
3
groupmodprends un nom comme argument principal pour moi ...groupmod -g NEWGID GROUPNAME
Matt
29

Le moyen le plus simple est d'utiliser groupmod -g <NEW_GID> <groupname>

Une autre méthode consiste à modifier /etc/groupdirectement. Le troisième champ de chaque colonne est le gid.

Si le groupe a changé est le groupe principal d'un utilisateur, /etc/passwddoivent être adaptés aussi: usermod -g <NEW_GID> <username>.

jofel
la source
Cela affectera-t-il également les fichiers? Je veux dire, gid de fichier et gid de groupe vont changer en même temps?
Mibzer
1
Non, cela ne changera que l'identifiant du groupe. Les fichiers / répertoires conservent leur gid (maintenant non nommé) et doivent être modifiés séparément.
Jofel
D'accord, merci. Donc, si je veux changer leurs gid (fichiers) en new gid, je dois exécuter une autre commande. Est-ce correct ? Ce serait mieux s'il y avait moyen de changer simultanément gid de fichier de groupe et gid de fichiers liés.
Mibzer
J'ai ajouté l'autre commande à ma réponse. Ce n'est pas un problème si un gid temporaire n'est pas utilisé dans / etc / group est utilisé. Chaque utilisateur du groupe doit se reconnecter pour avoir le nouveau gid.
Jofel
0

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

jirib
la source
comme je l'ai dit cela va changer le gid des fichiers. Mais ce n'est pas ce que je veux dire. Je veux changer gid d'un groupe pas un fichier.
Mibzer
ok,
j'étais