프로세스를 생성한 사용자를 식별하는 실제 사용자 ID가 있습니까?

프로세스를 생성한 사용자를 식별하는 실제 사용자 ID가 있습니까?

이 섹션에 따르면프로세스의 역할glibc 매뉴얼:

A process also has a real user ID which identifies the user who created the process ...

이를 확인하기 위해 다음 명령을 실행했습니다.

ps -eo cmd,ruid,euid | grep 'bash\|login'

그러면 다음과 같이 표시됩니다(lgd 계정의 uid는 1000입니다).

login --lgd              0      0
-bash                 1000   1000

bashlogin작성자가 루트 사용자에 속하므로 값이 0인 ruid가 0이 아닌 이유는 무엇입니까 ? 제가 잘못 이해한 건가요, 아니면 loginbash의 ruid를 변경하는 것과 같은 함수를 호출하는 건가요?setuid()

답변1

login실행하기 전에 사용자 ID를 변경했습니다 bash. 섀도우 구현에서 다음을 볼 수 있습니다.여기, 그 전에는 더 많은 설정이 있습니다쉘이 시작되었습니다.

인용한 링크에 설명된 역할 차이는 실제로 setuid 프로그램과 관련이 있습니다. 복사본을 만든 id다음 setuid로 설정하면 다른 값 id -uid -ru나타납니다. 후자가 프로세스를 시작한 사용자 ID입니다.

관련 정보