기본적으로 동일한 질문에 "id"가 다른 답변을 제공하는 이유는 무엇입니까?

기본적으로 동일한 질문에 "id"가 다른 답변을 제공하는 이유는 무엇입니까?

나는 우분투에 있습니다.

$ 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로그인한 이후 계정 데이터베이스가 수정된 경우 다를 수 있습니다.

관련 정보