프로세스의 EUID, EGID 등은 어디에 저장되나요?

프로세스의 EUID, EGID 등은 어디에 저장되나요?

방금 Linux 권한에 관한 기사를 읽고 있었는데 거기에서 언급된 적이 없다는 것을 알았습니다. 어떻게 작동하는지 알고 싶습니다.

상황 예:read_file.out파일을 읽고 ~/file.txt내용을 인쇄하는 바이너리 파일을 실행합니다 . 이는 stdout프로세스를 생성한 사용자 및/또는 사용자의 신원을 기반으로 시스템이 읽을 수 있다고 판단하는 프로세스를 생성합니다 .~/file.txtEUIDEGID

이 값은 정확히 어디에 저장되어 있습니까? 시스템에서
' 라고 말하는 위치는 어디인가요?EUID가 1002이므로 파일을 읽을 수 있습니다."
또는
"귀하의 EUID는 1003이므로 읽을 수 없으며, 귀하는 이 파일에 접근할 수 있는 어떤 그룹의 구성원도 아니므로 읽는 것을 허용하지 않습니다."?

나는 의사 파일 시스템에 /proc/<pid>/특히 /proc/<pid>/stat( /proc/<pid>/status더 나은 읽기 버전 stat) 파일이 있다는 것을 발견했습니다. 시스템이 권한을 결정하는 파일입니까, 아니면 이와 같은 명령의 소스로만 사용되는 "정보" 파일입니까 ps?

답변 주셔서 감사합니다.

답변1

커널 데이터 구조에서. 의 가상 파일은 /proc/<pid>/단지 그 파일의 보기일 뿐입니다. 이제 소스 코드를 살펴볼 수 있지만 실제로 작동할지는 의문입니다. 각 프로세스에는 UID 및 GID에 대한 모든 필드와 보조 그룹 테이블 및 기타 프로세스별 데이터가 포함된 간단한 C 구조가 있을 수 있습니다.

관련 정보