web-dev-qa-db-fra.com

Changer le gid d'un groupe spécifique

Je voudrais changer l'identifiant de 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?

36
mibzer

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 utiliser des noms de groupe à la place; 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 tuer les processus qui ont ce groupe comme groupe effectif, réel ou enregistré.
  • Modifiez l'entrée dans la base de données de groupe. Sous Linux, exécutez groupmod -g NEWGID GROUPNAME. Sur d'autres systèmes, utilisez l'outil d'administration de ce système, ou vigr si disponible, ou modifiez /etc/group le cas échéant.
  • Modifiez le groupe de tous les fichiers de votre système qui appartiennent à l'ancien groupe.

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

  • Si vous avez une archive qui utilise l'ancien GID, reconstruisez-la.
  • Si vous avez un fichier de configuration ou un script qui fait référence à l'ancien GID, mettez-le à jour.
  • Redémarrez tous les processus qui doivent utiliser le nouveau GID.

Le moyen le plus simple consiste à utiliser groupmod -g <NEW_GID> <groupname>

Une autre façon consiste à modifier /etc/group directement. Le troisième champ de chaque colonne est le gid.

Si le groupe modifié est le groupe principal d'un utilisateur, /etc/passwd doit également être adapté: usermod -g <NEW_GID> <username>.

31
jofel

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

0
jirib