565 votes

Recharger les affectations de groupe d'un utilisateur Linux sans se déconnecter

Lors de l'affectation de la liste de groupes secondaires d'un utilisateur en utilisant :

# usermod -G <grouplist> <user>

est-il possible de forcer cette affectation de groupe à prendre effet sans déconnecter toutes les sessions en cours ?

Cela serait très utile dans la situation où une Écran existe avec de nombreux shells en cours d'exécution, car la session entière doit être détruite pour que l'affectation de groupe prenne effet.

Je pense que je peux changer le groupe primaire de l'utilisateur dans un Shell en cours d'exécution en utilisant la commande newgrp commande - existe-t-il une alternative qui fonctionnerait pour les groupes secondaires ?

Idéalement, je voudrais quelque chose qui prenne effet dans chaque Shell sans être exécuté manuellement dans chacun d'eux, mais à défaut, peut-être un moyen de forcer Screen à exécuter la même commande dans chacun.

0 votes

Je sais qu'au moins pour certains gestionnaires de fenêtres/sessions, il est possible de le faire de telle sorte que la session récupère le nouveau groupe et qu'il soit disponible pour tout nouveau processus lancé à partir des menus, des boutons du panneau ou autre. Je viens juste de venir ici pour retrouver cette information, donc je ne peux pas dire maintenant comment faire, et c'est probablement spécifique au gestionnaire de fenêtres.

4voto

abu_bua Points 251

Il y a déjà beaucoup de réponses correctes, mais cela a bien fonctionné pour moi sur les systèmes basés sur Debian :

sudo -s -u ${USER}

Cette commande fera le travail dans un environnement sudo.

El -s exécute le Shell tel que configuré dans le fichier /etc/passwd.

2voto

kqw Points 2451

Cela fait l'affaire si vous avez sudo et cela peut vous éviter de saisir votre mot de passe une fois de plus dans certains cas :

sudo su $USER

0 votes

La seule chose qui a fonctionné pour moi, c'est d'essayer de faire fonctionner docker sans redémarrage parce que j'avais un gros travail en cours d'exécution

2voto

leo60228 Points 143

Je n'ai pas réussi à faire fonctionner la commande newgrp. Je ne sais pas si cela dépend de /etc/sudoers, mais je dois normalement taper mon mot de passe pour sudo, et cela a fonctionné sans demander mon mot de passe :

[leo60228@leonix:~]$ groups
users wheel

[leo60228@leonix:~]$ sudo echo hi
[sudo] password for leo60228:
hi

[leo60228@leonix:~]$ sudo -k # reset sudo timeout

[leo60228@leonix:~]$ exec sudo -i -u $(whoami) # no password necessary

[leo60228@leonix:~]$ groups
users wheel docker

1voto

Marki555 Points 1133

J'ai eu un problème similaire mais aussi pour les utilisateurs non connectés. Le redémarrage de nscd n'a pas aidé, mais l'exécution de cette commande l'a fait : nscd -i group . Cela devrait demander à nscd (démon de mise en cache) de recharger le fichier des groupes.

1voto

Rea Haas Points 121

La réponse acceptée est correcte, mais elle n'est bonne que pour le Shell interactif, et ne fonctionnera pas dans les Shell. Pour résoudre ce problème, j'ai utilisé ceci :

newgrp <GroupName> << END
my_command
END

Cela ouvrira une nouvelle session avec les groupes mis à jour, exécutera la commande, puis vous ramènera à la première session, où vous n'êtes toujours pas dans le groupe. Cela vous permettra de créer le groupe et de l'utiliser dans le même script.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X