Después de agregar un grupo, ¿cerrar sesión + iniciar sesión no es suficiente en 18.04?

18

En ubuntu 18.04 con escritorio predeterminado, el comportamiento de cierre de sesión / inicio de sesión ha cambiado:

Anteriormente en un sistema Ubuntu, cuando descubro que necesito agregar mi identificación de usuario a algún grupo, fue suficiente para

sudo adduser ludwig docker # adds me to group docker

y luego tuve que cerrar sesión y volver a iniciar sesión para que el cambio de grupo sea efectivo.

Noté que con Ubuntu 18.04, después de agregar el grupo y cerrar la sesión y volver a iniciarla, la lista de grupos efectivos todavía no ha cambiado.

Como solución, reinicié el sistema, lo cual es inconveniente (requiere hacer la selección correcta en grub y volver a ingresar la contraseña de cifrado del disco).

  1. ¿Por qué el comportamiento ahora es así?
  2. ¿Puedo hacer algo más que no sea reiniciar?

(Sé que puedo ssh en localhost y obtener los grupos correctos solo en la sesión ssh. Esto también es demasiado inconveniente).

Ludwig Schulze
fuente
Probé sudo usermod -a -G group useren 18.04 y cerrar sesión y vuelva a iniciarla y funcionó.
Terrance
también con escritorio predeterminado?
Ludwig Schulze
¿Te refieres a la diferencia entre GNOME, Xubuntu, Kubuntu, etc.? Si quiere decir que GNOME es el predeterminado, entonces no, no ejecuto GNOME. Pero el comando debe ser el mismo independientemente del entorno de escritorio, ya que este es un elemento clave de contraseña / grupo que debe ser el mismo en todos los DE.
Terrance
OK, acabo de instalar GNOME para probar, y sudo usermod -a -G groupname usernamefuncionó bien allí también. Salí y volví a entrar y mi cambio estaba allí.
Terrance
Veo. @Terrance no está utilizando el escritorio predeterminado. El escritorio predeterminado se llama "ubuntu". Sé que está basado en gnome, pero entiendo que "gnome" es otro escritorio. "ubuntu" fue alterado para parecerse a la unidad.
Ludwig Schulze

Respuestas:

8

El comando loginctl terminate-user <user>funcionó para mí. (Reemplace <user>con su nombre de usuario) Sin embargo, probablemente no debería ejecutar esto cuando inicie sesión, ya que matará todos sus procesos.

iczero
fuente
confirmado trabajando en Ubuntu 18.04. Mucho más fácil que ps & grep!
AqD
De acuerdo, esto es más corto de escribir que mi propia solución. También ayuda en ubuntu 19.04. Votado y aceptado en lugar de mi propia solución.
Ludwig Schulze
7

Al "cerrar sesión" del escritorio predeterminado en ubuntu 18.04, algunos de los procesos del usuario no finalizan de inmediato, sino que se demoran. Estos son (observados por otro usuario):

$ 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

Al volver a iniciar sesión antes de que estos procesos salgan voluntariamente, no se crea una nueva sesión de inicio de sesión, pero la anterior se reutiliza. Esta es la razón por la cual la nueva membresía del grupo no es visible, sigue siendo la misma sesión de inicio de sesión anterior.

Una solución alternativa para evitar el reinicio es esperar ~ 20 segundos después de cerrar sesión y solo luego volver a iniciar sesión. Los procesos salen en algún lugar entre 10 y 20 segundos después de cerrar sesión.

Editar : como se informa en los comentarios a continuación, a veces los procesos persistentes no se cerrarán incluso con la espera, y después de volver a iniciar sesión, las membresías del grupo no se han actualizado. Descubrí que en este caso ayuda a

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

Reemplace ludwigcon su nombre de usuario. Esto mata todos los procesos que te pertenecen. Úselo solo cuando esté seguro de que tiene todos sus datos guardados en todos sus programas abiertos.

Ludwig Schulze
fuente
Este fue mi problema. Pero los procesos no desaparecieron después de cerrar sesión y esperar. Tuve que matar el proceso "systemd --user" y ejecutar "sudo systemctl daemon-reexec". Y también matar a todos los procesos dbus causa reiniciar systemd atornilla dbus. Necesario para reiniciar el administrador de red también. "systemctl restart network-manager" Quizás reinicie todo lo que depende de dbus / systemd
niknah
@niknah Oh, eso es malo. Parece que sería más fácil reiniciar en su caso. Gracias por informar a todos que puede ser más difícil.
Ludwig Schulze
@niknah Me encontré con el mismo problema que tú hoy. Después de cerrar sesión y esperar, algunos procesos simplemente no se cerrarían. Encontré una solución y actualizaré esta respuesta.
Ludwig Schulze
2

Una solución alternativa en el shell actual es ejecutar "su" para tener el nuevo grupo sin tener que reiniciar.

Como dije, este truco tiene que aplicarse a cada caparazón. Eso no es global.

Michael Opdenacker
fuente
Esto se puede usar para arreglar adb que no reconoce dispositivos después de agregar al usuario a adbusers aka sudo usermod -a -G adbusers $USER. Entonces puede hacer su $USERy sudo adb kill-server && adb start-serversolucionar el problema
xdevs23