После добавления группы выхода из системы + логин не хватит в 18.04?
В Ubuntu 18.04 с рабочим столом по умолчанию поведение выхода из системы / входа в систему изменилось:
Ранее в системе Ubuntu, когда я обнаружил, что мне нужно добавить свой идентификатор пользователя в какую-либо группу, было достаточно
sudo adduser ludwig docker # adds me to group docker
а затем мне пришлось выйти из системы и снова войти в систему, чтобы изменения в группе вступили в силу.
Я замечаю, что в Ubuntu 18.04 после добавления группы, выхода из системы и возврата список действующих групп остается неизменным.
В качестве обходного пути я перезагрузил систему, что неудобно (требует правильного выбора в grub и повторного ввода пароля шифрования диска).
- Почему поведение сейчас так?
- Могу ли я сделать что-то еще, кроме перезагрузки?
(Я знаю, что могу подключиться по 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 ", чтобы получить новую группу без перезагрузки.
Как я уже сказал, этот трюк должен быть применен к каждой оболочке. Это не глобально.