프로세스의 권한에 대해 궁금합니다.

검색해보니 이렇게 설명이 나왔습니다.
RUID : 프로세스를 시작한 유저의 ID
EUID : 프로세스가 가진 권한에 대한 ID

그래서 제 생각으로 chall을 실행한 것은 chall 유저이고, 파일의 소유자는 dream이니까 id 명령어로 확인한 chall의 UID와 dream의 UID를 RUID와 EUID에 각각 입력해서 풀었습니다.

이 때, 제가 코드를 제대로 이해했다면,

if(ruid == getuid() && euid == geteuid()) {
    setreuid(geteuid(), geteuid());

이 부분에서 RUID를 EUID로, 즉 dream의 UID로 바꾸는데, 그렇기 때문에 dream이 읽을 수 있는 flag 파일을 읽게 된 것이 맞나요??
저 부분이 없으면 dream이 소유한 프로세스라 해도 chall이 실행했기 때문에 flag를 읽을 수 없는 건가요?

EUID가 권한에 관한 UID라고 해서 EUID가 dream의 것이면 dream의 파일을 읽을 수 있지 않을까 하는 생각이 들어서요.

#misc
작성자 정보
답변 0
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기