Nach dem Hinzufügen einer Gruppe reicht Abmelden + Anmelden in 18.04 nicht aus.

15

In Ubuntu 18.04 mit Standard-Desktop hat sich das Verhalten beim Abmelden / Anmelden geändert:

Zuvor war es auf einem Ubuntu-System ausreichend, wenn ich feststellte, dass ich meine Benutzer-ID zu einer Gruppe hinzufügen muss

sudo adduser ludwig docker # adds me to group docker

und dann musste ich mich abmelden und erneut anmelden, damit die Gruppenänderung wirksam wurde.

Ich stelle fest, dass mit Ubuntu 18.04 nach dem Hinzufügen der Gruppe und dem Abmelden und erneuten Anmelden die Liste der effektiven Gruppen immer noch unverändert ist.

Um dieses Problem zu umgehen, habe ich das System neu gestartet, was unpraktisch ist (erfordert die richtige Auswahl in grub und die erneute Eingabe des Kennworts für die Festplattenverschlüsselung).

  1. Warum ist das Verhalten jetzt so?
  2. Kann ich etwas anderes tun, als neu zu starten?

(Ich weiß, dass ich ssh in localhost und nur in der ssh-Sitzung die richtigen Gruppen erhalten kann. Dies ist auch zu unpraktisch.)

Ludwig Schulze
quelle
Ich habe sudo usermod -a -G group useram 18.04 getestet und mich abgemeldet und wieder angemeldet und es hat funktioniert.
Terrance
auch mit Standard-Desktop?
Ludwig Schulze
Du meinst wie der Unterschied zwischen GNOME, Xubuntu, Kubuntu usw.? Wenn Sie meinen, dass GNOME die Standardeinstellung ist, dann führe ich GNOME nicht aus. Der Befehl sollte jedoch unabhängig von der Desktop-Umgebung derselbe sein, da dies das Kernkennwort / Gruppenelement ist, das für alle DEs gleich sein sollte.
Terrance
OK, ich habe gerade GNOME zum Testen installiert und sudo usermod -a -G groupname usernameauch dort gut funktioniert. Abgemeldet und wieder angemeldet und mein Wechselgeld war da.
Terrance
Aha. @Terrance Sie verwenden nicht den Standard-Desktop. Der Standarddesktop heißt "ubuntu". Ich weiß, dass es auf Gnome basiert, aber ich verstehe, dass "Gnome" ein anderer Desktop ist. "Ubuntu" wurde geändert, um der Einheit zu ähneln.
Ludwig Schulze

Antworten:

7

Der Befehl loginctl terminate-user <user>hat bei mir funktioniert. (Durch <user>Ihren Benutzernamen ersetzen ) Sie sollten dies wahrscheinlich nicht ausführen, wenn Sie angemeldet sind, da dies alle Ihre Prozesse abbricht.

iczero
quelle
bestätigte die Arbeit an Ubuntu 18.04. Viel einfacher als ps & grep!
AqD
Einverstanden, dies ist kürzer zu tippen als meine eigene Lösung. Es hilft auch auf Ubuntu 19.04. Upvoted und akzeptiert anstelle meiner eigenen Lösung.
Ludwig Schulze
7

Beim "Abmelden" vom Standarddesktop in Ubuntu 18.04 werden einige Prozesse des Benutzers nicht sofort beendet, sondern verweilen. Dies sind (von einem anderen Benutzer beobachtet):

$ 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

Wenn Sie sich erneut anmelden, bevor diese Prozesse freiwillig beendet werden, wird keine neue Anmeldesitzung erstellt, sondern die alte wiederverwendet. Dies ist der Grund, warum die neue Gruppenmitgliedschaft nicht sichtbar ist. Es handelt sich immer noch um dieselbe alte Anmeldesitzung.

Eine Problemumgehung, um einen Neustart zu vermeiden, besteht darin, nach dem Abmelden ca. 20 Sekunden zu warten und sich erst dann wieder anzumelden. Die Prozesse werden zwischen 10 und 20 Sekunden nach dem Abmelden beendet.

Bearbeiten : Wie in den Kommentaren unten angegeben, werden die verbleibenden Prozesse manchmal auch beim Warten nicht beendet, und nach dem erneuten Anmelden wurden die Gruppenmitgliedschaften nicht aktualisiert. Ich fand, dass es in diesem Fall hilft

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

Ersetzen Sie ludwigdurch Ihren Benutzernamen. Dies beendet alle Prozesse, die Ihnen gehören. Verwenden Sie diese Option nur, wenn Sie sicher sind, dass alle Ihre Daten in allen geöffneten Programmen gespeichert sind.

Ludwig Schulze
quelle
Das war mein Problem. Die Prozesse wurden jedoch nach dem Abmelden und Warten nicht beendet. Ich musste den Prozess "systemd --user" beenden und "sudo systemctl daemon-reexec" ausführen. Und auch alle dbus-Prozesse zu beenden, führt dazu, dass systemd den dbus neu startet. Muss auch den Netzwerkmanager neu starten. "systemctl restart network-manager" Vielleicht starten Sie alles neu, was von dbus / systemd abhängt
niknah
@ Niknah Oh, das ist schlecht. Klingt so, als wäre es in Ihrem Fall einfacher, einfach neu zu starten. Vielen Dank, dass Sie alle wissen lassen, dass es schwieriger sein kann.
Ludwig Schulze
@niknah Ich bin heute auf das gleiche Problem gestoßen wie du. Nach dem Abmelden und Warten wurden einige Prozesse einfach nicht beendet. Ich habe eine Problemumgehung gefunden und werde diese Antwort aktualisieren.
Ludwig Schulze
2

Eine Problemumgehung in der aktuellen Shell besteht darin, "su" auszuführen, um die neue Gruppe zu erhalten, ohne neu starten zu müssen.

Wie gesagt, dieser Trick muss auf jede Shell angewendet werden. Das ist nicht global.

Michael Opdenacker
quelle
Dies kann verwendet werden, um zu beheben, dass adb Geräte nicht erkennt, nachdem der Benutzer zu adbusers aka hinzugefügt wurde sudo usermod -a -G adbusers $USER. Dann können Sie das Problem beheben su $USERund sudo adb kill-server && adb start-serverbeheben
xdevs23