为什么“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 和补充 gids),并通过查询passwd/group数据库将这些属性转换为相应的用户/组名称。

login这些 id 将在正在运行的祖先进程或等效进程中设置,并被调用init_group()以检索登录用户的 uid 和组。

如果执行了 setuid / setgid 应用程序,则 euid 或 egid 可能会更改。

id eugen查询passwd/group数据库。因此,您可以看到用户现在登录后将获得的用户和组 ID 以及名称。

除了setuid/segid应用程序之外,如果帐户数据库自您登录后已被修改,则可能会有所不同。

相关内容