環境
$ 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秒ほど(?)待つと関連プロセスが終了するので、その後にログインすると解決する。
参考
Manage Docker as a non-root user
After adding a group, logout+login is not enough in 18.04?