В человечности 18.04 с рабочим столом по умолчанию изменилось поведение выхода из системы/входа в систему:
Ранее в системе Ubuntu, когда я нахожу, что должен добавить свой идентификатор пользователя к некоторой группе, было достаточно
sudo adduser ludwig docker # adds me to group docker
и затем я должен был выйти из системы и войти в систему снова для внесения изменения группы эффективным.
Я замечаю, что с Ubuntu 18.04, после добавления группы и выходить из системы и въезжают задним ходом, список эффективных групп все еще неизменен.
Как обходное решение я перезагрузил систему, которая неудобна (требует делания правильного выбора в личинке и повторно введения пароля шифрования диска).
(Я знаю, что могу ssh в localhost и получать корректные группы на ssh сессии только. Это также слишком неудобно.)
У меня сработала команда loginctl terminate-user
. (Замените
своим именем пользователя) Вы, вероятно, не должны запускать это при входе в систему, поскольку это убьет все ваши процессы.
Процессы, остающиеся для пользователя после выхода из системы, связаны с systemd
usrtest 4150 4150 4150 1.7 0.1 77140 8500? Ss 22:46 0:00/lib/systemd/systemd - пользователь
usrtest 4151 4150 4150 0.0 0.0 280232 3084? S 22:46 0:00 (sd-pam)
usrtest 4610 4610 4610 0.2 0.0 49796 3824? Ss 22:47 0:00/usr/bin/dbus-daemon - сессия - address=systemd: - nofork - nopidfile - systemd-активация - только для системного журнала
usrtest 4328 4327 4327 0.5 0.1 386100 12060? S
эти процессы действительно запускается systemd от имени пользователя.
, Таким образом, я сделал следующий тест:
кошка/etc/systemd/system/user@1000.service KillMode=control-group
systemctl - системный выставочный-p KillMode user@1000.service KillMode=control-group
после операции выхода из системы/входа в систему, это, кажется, изменяет это поведение выхода из системы после (все же) другой выход из системы/вход в систему после usermod-a-G, команда 'групп' возвращает добавленную группу. Мне не нравится он, потому что, если эти процессы задерживаются после того, как выход из системы там является, вероятно, серьезным основанием (заключительные операции кажется вероятным), но эта проблема чувствует себя определенно связанной с systemd.
При «выходе» из рабочего стола по умолчанию в 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
своим именем пользователя. Это убивает все процессы, которые принадлежат вам.Используйте только в том случае, если вы уверены, что у вас сохранены все данные во всех открытых программах.
Временное решение в текущей оболочке - запустить su, чтобы создать новую группу без перезагрузки.
Как я сказал, этот трюк нужно применять к каждой оболочке. Это не глобально.