После добавления группы выхода из системы + логин не хватит в 18.04?

В Ubuntu 18.04 с рабочим столом по умолчанию поведение выхода из системы / входа в систему изменилось:

Ранее в системе Ubuntu, когда я обнаружил, что мне нужно добавить свой идентификатор пользователя в какую-либо группу, было достаточно

sudo adduser ludwig docker # adds me to group docker

а затем мне пришлось выйти из системы и снова войти в систему, чтобы изменения в группе вступили в силу.

Я замечаю, что в Ubuntu 18.04 после добавления группы, выхода из системы и возврата список действующих групп остается неизменным.

В качестве обходного пути я перезагрузил систему, что неудобно (требует правильного выбора в grub и повторного ввода пароля шифрования диска).

  1. Почему поведение сейчас так?
  2. Могу ли я сделать что-то еще, кроме перезагрузки?

(Я знаю, что могу подключиться по ssh к localhost и получить правильные группы только в сеансе ssh. Это также слишком неудобно.)

3 ответа

Решение

При выходе из рабочего стола по умолчанию в Ubuntu 18.04 некоторые пользовательские процессы не завершаются немедленно, а задерживаются. Это (замечено другим пользователем):

$ 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

При повторном входе в систему до добровольного завершения этих процессов новый сеанс входа в систему не создается, но старый используется повторно. Это причина, по которой новое членство в группе не видно, это все тот же старый сеанс входа в систему.

Обходной путь, позволяющий избежать перезагрузки, - это подождать ~20 секунд после выхода из системы и только затем снова войти в систему. Процессы завершаются где-то между 10 и 20 секундами после выхода из системы.

Редактировать: Как сообщается в комментариях ниже, иногда длительные процессы не завершаются даже при ожидании, и после повторного входа членство в группах не обновлялось. Я обнаружил, что в этом случае это помогает

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

замещать ludwig с вашим именем пользователя. Это убивает все процессы, которые принадлежат вам. Используйте только тогда, когда вы уверены, что все ваши данные сохранены во всех открытых программах.

Команда loginctl terminate-user <user> работал на меня. (Заменить <user> с вашим именем пользователя) Вы, вероятно, не должны запускать это при входе в систему, хотя это убьет все ваши процессы.

Обходной путь в текущей оболочке - запустить "su ", чтобы получить новую группу без перезагрузки.

Как я уже сказал, этот трюк должен быть применен к каждой оболочке. Это не глобально.

Другие вопросы по тегам