Après avoir ajouté un groupe, la déconnexion + la connexion ne suffit pas en 18.04?

18

Dans Ubuntu 18.04 avec le bureau par défaut, le comportement de déconnexion / connexion a changé:

Auparavant, sur un système Ubuntu, lorsque je constate que je dois ajouter mon ID utilisateur à un groupe, il suffisait de

sudo adduser ludwig docker # adds me to group docker

puis j'ai dû me déconnecter et me reconnecter pour que le changement de groupe soit effectif.

Je remarque qu'avec Ubuntu 18.04, après avoir ajouté le groupe et se déconnecter puis se reconnecter, la liste des groupes efficaces reste inchangée.

Pour contourner ce problème, j'ai redémarré le système, ce qui n'est pas pratique (nécessite de faire la bonne sélection dans grub et de ressaisir le mot de passe de chiffrement du disque).

  1. Pourquoi le comportement est-il maintenant comme ça?
  2. Puis-je faire autre chose que redémarrer?

(Je sais que je peux ssh dans localhost et obtenir les bons groupes dans la session ssh uniquement. C'est aussi trop gênant.)

Ludwig Schulze
la source
J'ai testé sudo usermod -a -G group useren 18.04 et me suis déconnecté et reconnecté et cela a fonctionné.
Terrance
également avec le bureau par défaut?
Ludwig Schulze
Vous voulez dire la différence entre GNOME, Xubuntu, Kubuntu, etc.? Si vous voulez dire que GNOME est la valeur par défaut, alors non, je ne lance pas GNOME. Mais la commande doit être la même quel que soit l'environnement de bureau, car il s'agit de trucs de mot de passe / groupe de base qui devraient être les mêmes dans tous les DE.
Terrance
OK, je viens d'installer GNOME pour les tests, et j'ai sudo usermod -a -G groupname usernamebien fonctionné là aussi. Déconnecté et reconnecté et mon changement était là.
Terrance
Je vois. @Terrance vous n'utilisez pas le bureau par défaut. Le bureau par défaut est nommé "ubuntu". Je sais qu'il est basé sur gnome, mais je comprends que "gnome" est un autre bureau. "ubuntu" a été modifié pour ressembler à l'unité.
Ludwig Schulze

Réponses:

8

La commande a loginctl terminate-user <user>fonctionné pour moi. (Remplacez <user>par votre nom d'utilisateur) Vous ne devriez probablement pas exécuter cela lorsque vous êtes connecté, car cela tuera tous vos processus.

iczero
la source
confirmé de travailler sur Ubuntu 18.04. Beaucoup plus facile que ps & grep!
AqD
D'accord, c'est plus court à taper que ma propre solution. Il aide également sur Ubuntu 19.04. Surévalué et accepté au lieu de ma propre solution.
Ludwig Schulze
7

Lors de la "déconnexion" du bureau par défaut dans ubuntu 18.04, certains processus de l'utilisateur ne sont pas interrompus immédiatement, mais persistent. Ce sont (observés par un autre utilisateur):

$ ps axu | grep ^ludwig
ludwig    26508  0.3  0.2  77052  8308 ?        Ss   23:32   0:00 /lib/systemd/systemd --user
ludwig    26509  0.0  0.0 261776  2968 ?        S    23:32   0:00 (sd-pam)
ludwig    26691  0.2  0.3 381288 12204 ?        S<l  23:32   0:00 /usr/bin/pulseaudio --start --log-target=syslog
ludwig    27352  0.0  0.0  49796  3756 ?        Ss   23:33   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only

Lorsque vous vous reconnectez avant que ces processus ne se terminent volontairement, aucune nouvelle session de connexion n'est créée, mais l'ancienne est réutilisée. C'est la raison pour laquelle la nouvelle appartenance au groupe n'est pas visible, il s'agit toujours de la même ancienne session de connexion.

Une solution de contournement pour éviter le redémarrage consiste à attendre environ 20 secondes après la déconnexion, puis à se reconnecter. Les processus se terminent entre 10 et 20 secondes après la déconnexion.

Modifier : Comme indiqué dans les commentaires ci-dessous, parfois les processus persistants ne s'arrêtent pas, même en attendant, et après vous être reconnecté, les appartenances au groupe n'ont pas été mises à jour. J'ai trouvé que dans ce cas, cela aide à

ps axu | grep ^ludwig | awk '{print $2}' | xargs kill -9

Remplacez ludwigpar votre nom d'utilisateur. Cela tue tous les processus qui vous appartiennent. Utilisez uniquement lorsque vous êtes sûr que toutes vos données sont enregistrées dans tous vos programmes ouverts.

Ludwig Schulze
la source
C'était mon problème. Mais les processus n'ont pas disparu après la déconnexion et l'attente. J'ai dû tuer le processus "systemd --user" et exécuter "sudo systemctl daemon-reexec". Et également tuer tous les processus dbus provoquant le redémarrage de systemd bousille dbus. Nécessaire pour redémarrer le gestionnaire de réseau aussi. "systemctl restart network-manager" Peut-être redémarrer tout ce qui dépend de dbus / systemd
niknah
@niknah Oh c'est mauvais. On dirait qu'il serait plus facile de simplement redémarrer dans votre cas. Merci d'avoir fait savoir à tout le monde que cela peut être plus difficile.
Ludwig Schulze
@niknah J'ai rencontré le même problème que vous aujourd'hui. Après la déconnexion et l'attente, certains processus ne s'arrêtaient tout simplement pas. J'ai trouvé une solution de contournement et mettrai à jour cette réponse.
Ludwig Schulze
2

Une solution de contournement dans le shell actuel consiste à exécuter "su" pour avoir le nouveau groupe sans avoir à redémarrer.

Comme je l'ai dit, cette astuce doit être appliquée à chaque shell. Ce n'est pas mondial.

Michael Opdenacker
la source
Cela peut être utilisé pour corriger adb ne reconnaissant pas les périphériques après avoir ajouté l'utilisateur à adbusers aka sudo usermod -a -G adbusers $USER. Ensuite, vous pouvez faire su $USERet sudo adb kill-server && adb start-serverrésoudre le problème
xdevs23