Ubuntu 20.04 LTSで、ユーザにセカンダリグループを追加する場合の注意点

環境

$ cat /etc/os-release | grep PRETTY_NAME
PRETTY_NAME="Ubuntu 20.04 LTS"

現象

dockerをsudoしなくても実行できるようにしたかったので、ユーザredjに対してセカンダリグループdockerを追加した。 しかしながら、ログアウトしてログインし直しても、ユーザredjセカンダリグループdockerが反映されなかった。

本来は以下のように998(docker)が反映されていてほしかったが、

$ id
uid=1000(redj) (中略),132(sambashare),998(docker)

実際には以下のように反映されていなかった。

$ id
uid=1000(redj) (中略),132(sambashare)

原因

Ubuntu 20.04のディスプレイマネージャであるGDM3について、ユーザのログアウトの後、暫く関連するプロセスを終了しないことが原因らしい。 rootで直接ログインしてプロセスを確認すると、以下のプロセスが暫く残っていた。

# ps -ef | grep -E '^redj' 
redj       22751       1  0 23:31 ?        00:00:00 /lib/systemd/systemd --user
redj       22753   22751  0 23:31 ?        00:00:00 (sd-pam)
redj       24148   22751  4 23:33 ?        00:00:00 /usr/bin/pulseaudio --daemonize=no --log-target=journal
redj       24176   22751  0 23:33 ?        00:00:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only

どうもログアウトとログインを素早く行うと、その関連するプロセスが再利用されて(?)、ユーザ情報のリフレッシュがされないらしい。 ログアウト後、20秒ほど(?)待つと関連プロセスが終了するので、その後にログインすると解決する。

参考