基本的に、同じ質問に「id」が異なる答えを与えるのはなぜですか?

基本的に、同じ質問に「id」が異なる答えを与えるのはなぜですか?

私はUbuntuにいます。

$ whoami
eugen
$ id
uid=1000(eugen) gid=1000(eugen) groups=1000(eugen),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),134(lxd),135(sambashare)
$ id eugen
uid=1000(eugen) gid=1000(eugen) groups=1000(eugen),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),134(lxd),135(sambashare),137(docker)

なぜそんなことですか?

答え1

dockerグループに自分自身を追加してまだログインしていないようです。したがって、id以前のグループ(現在のユーザーが所有しているグループ)が表示され、現在のid eugenグループがロードされeugenますdocker

バラよりユーザーをグループに追加しましたが、ファイルに対するグループ権限はまだ適用されません。もっと学ぶ。

答え2

idプロセスの属性(euid、egid、および補足gid)は個別に報告され、クエリpasswd/データベースを介して対応するgroupユーザー/グループ名に変換されます。

loginこれらのIDは、実行中の親プロセスまたは同等のプロセスで設定され、init_group()ログインしたユーザーのuidとグループを取得するために呼び出されます。

setuid/setgid アプリケーションを実行すると、euid または egid が変更されることがあります。

id eugenクエリpasswd/groupデータベース。したがって、ユーザーが今すぐログインしたときに取得されるユーザーとグループIDと名前を表示できます。

setuid/アプリケーションに加えて、segidログイン後にアカウントデータベースが変更された場合は異なる場合があります。

関連情報