방금 Linux 권한에 관한 기사를 읽고 있었는데 거기에서 언급된 적이 없다는 것을 알았습니다. 어떻게 작동하는지 알고 싶습니다.
상황 예:read_file.out
파일을 읽고 ~/file.txt
내용을 인쇄하는 바이너리 파일을 실행합니다 . 이는 stdout
프로세스를 생성한 사용자 및/또는 사용자의 신원을 기반으로 시스템이 읽을 수 있다고 판단하는 프로세스를 생성합니다 .~/file.txt
EUID
EGID
이 값은 정확히 어디에 저장되어 있습니까? 시스템에서
' 라고 말하는 위치는 어디인가요?EUID가 1002이므로 파일을 읽을 수 있습니다."
또는
"귀하의 EUID는 1003이므로 읽을 수 없으며, 귀하는 이 파일에 접근할 수 있는 어떤 그룹의 구성원도 아니므로 읽는 것을 허용하지 않습니다."?
나는 의사 파일 시스템에 /proc/<pid>/
특히 /proc/<pid>/stat
( /proc/<pid>/status
더 나은 읽기 버전 stat
) 파일이 있다는 것을 발견했습니다. 시스템이 권한을 결정하는 파일입니까, 아니면 이와 같은 명령의 소스로만 사용되는 "정보" 파일입니까 ps
?
답변 주셔서 감사합니다.
답변1
커널 데이터 구조에서. 의 가상 파일은 /proc/<pid>/
단지 그 파일의 보기일 뿐입니다. 이제 소스 코드를 살펴볼 수 있지만 실제로 작동할지는 의문입니다. 각 프로세스에는 UID 및 GID에 대한 모든 필드와 보조 그룹 테이블 및 기타 프로세스별 데이터가 포함된 간단한 C 구조가 있을 수 있습니다.