Existe-t-il un moyen sous Linux de mettre à jour les propriétés de l'utilisateur / groupe sans avoir à se reconnecter?

24

Après avoir édité / etc / group et ajouté un utilisateur à des groupes auxquels il n'appartenait pas, l'utilisateur ne pourra pas utiliser ses nouveaux privilèges à moins qu'il ne démarre une nouvelle session.

Existe-t-il une commande pour actualiser les propriétés des utilisateurs / groupes dans une session en cours?

wonea
la source
1
Y a-t-il une raison pour laquelle vous modifiez le fichier à la main au lieu de l'utiliser useradd -G groupname username?
Bobby
4
@Bobby: cela ne ferait aucune différence.
niXar
Vous pourriez regarder cette réponse .
Pablo A

Réponses:

16

Au niveau du noyau, l'appartenance à un groupe est une propriété de chaque processus. À moins qu'il n'ait la capacité appropriée (CAP_SETGID si je ne me trompe pas), c'est-à-dire les privilèges root à toutes fins utiles, un processus ne peut pas appartenir à un nouveau groupe.

Un utilisateur n'existe pas en tant qu'objet au niveau du noyau; seuls les processus (et fichiers) le font. Un processus a un UID (efficace et ainsi de suite) et une liste d'ID de groupe.

Lorsque vous ajoutez un utilisateur à un groupe, le noyau n'a aucune idée de ce que cela signifie. Il sait seulement, indirectement, que la prochaine fois que / bin / login ou / usr / bin / newgrp sera exécuté, un processus avec cet identifiant d'utilisateur aura un nouvel identifiant de groupe dans sa liste.

Donc, pour répondre à votre question, si vous parlez d'une session Gnome ou KDE, vous devez en effet la redémarrer. Ou si vous ne vous souciez que du résultat d'une commande en ce qui concerne ce nouveau groupe, vous pouvez utiliser newgrp que je viens de mentionner. Il démarrera un nouveau shell avec le groupe nouvellement ajouté.

niXar
la source
5

J'ai lu auparavant que la commande newgrp fait cela, mais uniquement pour le shell actuel. Il ne semble pas y avoir de meilleure alternative que de se déconnecter puis de se reconnecter.

Andy Shellam
la source
3
Ce que fait newgrp est en fait de démarrer un nouveau shell. Donc, si vous ^ D en revenez à votre ancienne coquille. Je fais habituellement simplement 'exec newgrp'
niXar