Depois de adicionar um grupo, logout + login não é suficiente na 18.04?


18

No ubuntu 18.04 com área de trabalho padrão, o comportamento de logout / login mudou:

Anteriormente, em um sistema Ubuntu, quando considerava necessário adicionar meu ID de usuário a algum grupo, era suficiente

sudo adduser ludwig docker # adds me to group docker

e então tive que sair e fazer login novamente para efetivar a alteração do grupo.

Percebo que, com o Ubuntu 18.04, após adicionar o grupo e efetuar logoff e logon novamente, a lista de grupos eficazes ainda permanece inalterada.

Como solução alternativa, reiniciei o sistema, o que é inconveniente (requer a seleção correta no grub e a inserção da senha de criptografia de disco).

  1. Por que o comportamento agora é assim?
  2. Posso fazer outra coisa que não seja a reinicialização?

(Eu sei que posso ssh no localhost e obter os grupos corretos apenas na sessão ssh. Isso também é muito inconveniente.)


Eu testei sudo usermod -a -G group userno 18.04 e saí e voltei e funcionou.
Terrance

também com área de trabalho padrão?
Ludwig Schulze

Você quer dizer a diferença entre GNOME, Xubuntu, Kubuntu, etc.? Se você quer dizer que o GNOME é o padrão, não, eu não corro o GNOME. Mas o comando deve ser o mesmo, independentemente do ambiente da área de trabalho, pois esse é o principal material de senha / grupo que deve ser o mesmo em todos os DEs.
Terrance

OK, acabei de instalar o GNOME para teste e sudo usermod -a -G groupname usernamefuncionou bem lá também. Saí e voltei e minha mudança estava lá.
Terrance 12/06

Eu vejo. @Terrance você não está usando a área de trabalho padrão. A área de trabalho padrão é chamada "ubuntu". Eu sei que é baseado no gnome, mas entendo que o "gnome" é outra área de trabalho. O "ubuntu" foi alterado para se parecer com a unidade.
Ludwig Schulze

Respostas:


8

O comando loginctl terminate-user <user>funcionou para mim. (Substitua <user>pelo seu nome de usuário) Você provavelmente não deve executar isso quando estiver conectado, pois isso matará todos os seus processos.


confirmou o trabalho no Ubuntu 18.04. Muito mais fácil do que ps & grep!
AqD 29/01/19

Concordado, este é mais curto para digitar do que minha própria solução. Também ajuda no ubuntu 19.04. Votado e aceito em vez de minha própria solução.
Ludwig Schulze

7

Ao fazer o logoff da área de trabalho padrão no ubuntu 18.04, alguns dos processos do usuário não são finalizados imediatamente, mas permanecem. Estes são (observados por outro usuário):

$ 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

Ao efetuar login novamente antes que esses processos saiam voluntariamente, nenhuma nova sessão de login é criada, mas a antiga é reutilizada. Esta é a razão pela qual a nova associação ao grupo não está visível, ainda é a mesma sessão de login antiga.

Uma solução alternativa para evitar a reinicialização é aguardar ~ 20 segundos após o logoff e somente depois efetuar o logon novamente. Os processos são encerrados entre 10 e 20 segundos após o logoff.

Editar : conforme relatado nos comentários abaixo, às vezes os processos remanescentes não são encerrados mesmo com a espera e, após o login novamente, as associações do grupo não são atualizadas. Eu descobri que, neste caso, ajuda a

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

Substitua ludwigpelo seu nome de usuário. Isso mata todos os processos que pertencem a você. Use somente quando tiver certeza de que todos os seus dados estão em todos os seus programas abertos salvos.


Este foi o meu problema. Mas os processos não desapareceram após o logout e a espera. Eu tive que matar o processo "systemd --user" e executar "sudo systemctl daemon-reexec". E também matar todos os processos do dbus, pois a reinicialização do sistema atrapalha o dbus. Também era necessário reiniciar o gerenciador de rede. "systemctl restart network-manager" Talvez reiniciar tudo o que depende dbus / systemd
niknah

@niknah Oh, isso é ruim. Parece que seria mais fácil apenas reiniciar no seu caso. Obrigado por informar a todos que pode ser mais difícil.
Ludwig Schulze

@niknah Encontrei o mesmo problema que você hoje. Depois de sair e aguardar, alguns processos simplesmente não são encerrados. Encontrei uma solução alternativa e atualizarei esta resposta.
Ludwig Schulze

2

Uma solução alternativa no shell atual é executar "su" para ter o novo grupo sem precisar reiniciar.

Como eu disse, esse truque deve ser aplicado a cada shell. Isso não é global.


Isso pode ser usado para corrigir adb que não reconhece dispositivos depois de adicionar o usuário aos adbusers aka sudo usermod -a -G adbusers $USER. Então você pode fazer su $USERe sudo adb kill-server && adb start-serverpara corrigir o problema
xdevs23
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.