Dopo aver aggiunto un gruppo, logout + login non è sufficiente in 18.04?


18

In Ubuntu 18.04 con desktop predefinito, il comportamento di logout / login è cambiato:

In precedenza su un sistema Ubuntu, quando trovavo che dovevo aggiungere il mio ID utente a un gruppo, era sufficiente

sudo adduser ludwig docker # adds me to group docker

e poi ho dovuto disconnettermi e riconnettermi per rendere efficace la modifica del gruppo.

Ho notato che con Ubuntu 18.04, dopo aver aggiunto il gruppo e disconnesso e riconnesso, l'elenco dei gruppi effettivi è rimasto invariato.

Per ovviare al problema, ho riavviato il sistema, il che è scomodo (richiede di effettuare la selezione corretta in grub e reinserire la password di crittografia del disco).

  1. Perché il comportamento ora è così?
  2. Posso fare qualcos'altro oltre al riavvio?

(So ​​di poter ssh in localhost e ottenere i gruppi corretti solo nella sessione ssh. Anche questo è troppo scomodo.)


Ho provato sudo usermod -a -G group usernel 18.04 e ho effettuato il logout e il login e ha funzionato.
Terrance

anche con desktop predefinito?
Ludwig Schulze,

Intendi come la differenza tra GNOME, Xubuntu, Kubuntu, ecc.? Se vuoi dire che GNOME è l'impostazione predefinita, allora no, non eseguo GNOME. Ma il comando dovrebbe essere lo stesso indipendentemente dall'ambiente desktop in quanto si tratta di roba password / gruppo di base che dovrebbe essere la stessa in tutti i DE.
Terrance

OK, ho appena installato GNOME per i test e ho sudo usermod -a -G groupname usernamefunzionato bene anche lì. Disconnesso e rientrato e il mio cambiamento era lì.
Terrance,

Vedo. @Terrance non si utilizza il desktop predefinito. Il desktop predefinito si chiama "Ubuntu". So che si basa su gnome, ma capisco che "gnome" è un altro desktop. "Ubuntu" è stato modificato per assomigliare all'unità.
Ludwig Schulze,

Risposte:


8

Il comando ha loginctl terminate-user <user>funzionato per me. (Sostituisci <user>con il tuo nome utente) Probabilmente non dovresti eseguirlo quando effettui l'accesso, poiché ucciderà tutti i tuoi processi.


confermato lavorando su Ubuntu 18.04. Molto più facile di ps & grep!
AqD

D'accordo, questo è più breve da digitare rispetto alla mia soluzione. Aiuta anche su Ubuntu 19.04. È stato votato e accettato invece della mia soluzione.
Ludwig Schulze,

7

Quando "esci" dal desktop predefinito in Ubuntu 18.04, alcuni dei processi dell'utente non vengono terminati immediatamente, ma rimangono in sospeso. Questi sono (osservati da un altro utente):

$ 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

Quando si accede nuovamente prima che questi processi terminino volontariamente, non viene creata alcuna nuova sessione di accesso, ma quella precedente viene riutilizzata. Questo è il motivo per cui la nuova appartenenza al gruppo non è visibile, è sempre la stessa vecchia sessione di accesso.

Una soluzione alternativa per evitare il riavvio è di attendere ~ 20 secondi dopo la disconnessione e solo dopo il log-in. I processi terminano tra 10 e 20 secondi dopo la disconnessione.

Modifica : come riportato nei commenti seguenti, a volte i processi persistenti non si chiudono nemmeno in attesa e, dopo aver effettuato nuovamente l'accesso, le appartenenze ai gruppi non sono state aggiornate. Ho scoperto che in questo caso aiuta

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

Sostituisci ludwigcon il tuo nome utente. Questo uccide tutti i processi che ti appartengono. Utilizzare solo quando si è sicuri di aver salvato tutti i dati in tutti i programmi aperti.


Questo era il mio problema Ma i processi non sono andati via dopo la disconnessione e l'attesa. Ho dovuto interrompere il processo "systemd --user" ed eseguire "sudo systemctl daemon-reexec". E anche uccidere tutti i processi dbus causa il riavvio del sistema e rovina dbus. Necessario riavviare anche il gestore di rete. "systemctl restart network-manager" Forse riavvia tutto ciò che dipende da dbus / systemd
niknah

@niknah Oh, questo è male. Sembra che sarebbe più semplice riavviare nel tuo caso. Grazie per aver fatto sapere a tutti che può essere più difficile.
Ludwig Schulze,

@niknah Mi sono imbattuto nello stesso problema di te oggi. Dopo la disconnessione e l'attesa, alcuni processi non si chiudevano. Ho trovato una soluzione alternativa e aggiornerò questa risposta.
Ludwig Schulze,

2

Una soluzione alternativa nella shell corrente è eseguire "su" per avere il nuovo gruppo senza riavviare.

Come ho detto, questo trucco deve essere applicato a ogni shell. Non è globale.


Questo può essere usato per correggere adb che non riconoscono i dispositivi dopo aver aggiunto l'utente ad adbusers aka sudo usermod -a -G adbusers $USER. Quindi puoi fare su $USERe sudo adb kill-server && adb start-serverrisolvere il problema
xdevs23
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.