web-dev-qa-db-ja.com

グループを追加した後、18.04でログアウト+ログインだけでは不十分ですか?

デフォルトのデスクトップを使用するubuntu 18.04では、ログアウト/ログインの動作が変更されました:

以前はUbuntuシステムで、ユーザーIDを何らかのグループに追加する必要があることがわかったとき、それは十分でした

Sudo adduser ludwig docker # adds me to group docker

そして、グループの変更を有効にするには、ログアウトして再度ログインする必要がありました。

Ubuntu 18.04では、グループを追加してログアウトしてからログインし直しても、有効なグループのリストはまだ変更されていません。

回避策として、システムを再起動しましたが、これは不便です(grubで正しい選択を行い、ディスク暗号化パスワードを再入力する必要があります)。

  1. なぜこのような動作になるのですか?
  2. 再起動する以外のことはできますか?

(localhostにsshして、sshセッションでのみ正しいグループを取得できることはわかっています。これも不便です。)

8
Ludwig Schulze

コマンドloginctl terminate-user <user>がうまくいきました。 (<user>をユーザー名に置き換えます)すべてのプロセスを強制終了するため、ログイン時にこれを実行しないでください。

3
iczero

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をユーザー名に置き換えます。これにより、自分に属するすべてのプロセスが強制終了されます。開いているすべてのプログラムのすべてのデータが保存されていることが確実な場合にのみ使用してください。

6
Ludwig Schulze

ログアウト後にユーザーに残るプロセスはsystemdに関連しています

usrtest 4150 4150 4150 1.7 0.1 77140 8500? SS 22:46 0:00/lib/systemd/systemd --user

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 --session --address = systemd:--nofork --nopidfile --systemd-activation --syslog-only

usrtest 4328 4327 4327 0.5 0.1 386100 12060? S

実際、これらのプロセスはユーザーに代わってsystemdによって起動されます。

そこで、次のテストを行いました。

cat /etc/systemd/system/[email protected] KillMode = control-group

systemctl --system show -p KillMode [email protected] KillMode = control-group

ログアウト/ログイン操作の後、usermod -a -Gに続いて(まだ)別のログアウト/ログイン後にこのログアウト動作を変更するようです。'groups 'コマンドは追加されたグループを返します。ログアウト後にこれらのプロセスが長引く場合、おそらく正当な理由があるため(操作を閉じる可能性が高いようです)、この問題は間違いなくsystemdに関連していると感じているため、私はそれが好きではありません。

0
user921704

回避策現在のシェルでは、「su」を実行して、再起動せずに新しいグループを作成します。

前述したように、このトリックは各シェルに適用する必要があります。それはグローバルではありません。

0