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


Après avoir édité / etc / group et que j'ajoute un utilisateur à des groupes auxquels il n'appartient pas, l'utilisateur ne pourra pas utiliser ses nouveaux privilèges à moins qu'il ne commence une nouvelle session.

Existe-t-il une commande pour actualiser les propriétés utilisateur / groupe dans une session en cours?


21
2018-03-22 14:27


origine


Y a-t-il une raison pour laquelle vous éditez le fichier à la main au lieu d'utiliser useradd -G groupname username? - Bobby
@Bobby: cela ne ferait aucune différence. - niXar
Vous pourriez regarder cette réponse. - Pablo Bianchi


Réponses:


Au niveau du noyau, l'appartenance à un groupe est une propriété de chaque processus. À moins d'avoir la capacité appropriée (CAP_SETGID si je ne me trompe pas), c'est-à-dire des 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 les fichiers) le font. Un processus a un uid (effectif et tout) et une liste d'identifiants 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 est exécuté, un processus avec cet identifiant 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 effectivement la redémarrer. Ou si vous ne vous souciez que du résultat d'une commande pour ce nouveau groupe, vous pouvez utiliser newgrp que je viens de mentionner. Il démarrera un nouveau shell avec le groupe nouvellement ajouté.


13
2018-06-15 10:19





J'ai lu avant que le newgrp commande le fait, mais uniquement pour le shell en cours. Il ne semble pas y avoir de meilleure alternative que de se déconnecter et de revenir en arrière.


5
2018-03-22 14:30



Ce que newgrp fait, c'est de démarrer un nouveau shell. Donc, si vous en revenez, vous êtes de retour dans votre ancien shell. Je fais généralement simplement 'exec newgrp' - niXar