Real/Effective ID 에 관해서..
글쓴이: jenix / 작성시간: 금, 2004/06/11 - 7:53오전
안녕하세요..
APUE 를 보다가 질문이 생겨서 이렇게 글을 올립니다. :oops:
4.4절에 관한건데요.. 제가 이해한게 정확한건지 해서요..
모든 프로세스는 6개 혹은 그 이상의 ID 를 가지고 있다고 하는데,
예를 들어,
-rwxr-xr-x 1 root 324232 May 14 12:09 apache2*
와 같이 apache2 실행 파일이 있을 때,
현재 퍼미션이 others 도 실행 가능 하니까,,
users 그룹의 jenix 란 사용자가 실행을 하면
Real ID 는 jenix 가 되고, Effective ID 는 root 가 되는 건가요?
맞게 이해한건지 ^^;;
( 음 -_- 그런데 왜 저건 퍼미션이 744 일까요?;; 설치해둔 디폴트 인데.. 몰랐네요...;; 음.. make_sock 등에서 퍼미션 에러로 실행이 안되긴 하는데.. 찝찝하군요 :shock: )
Forums:
APUE에 모든 프로세스가 6개의 아이디를 갖는 다는 말이 나오나요..?
APUE에 모든 프로세스가 6개의 아이디를 갖는 다는 말이 나오나요..?? 그런말이 있나..??
일반 적인 경우 real id와 effective id 는 동일 하죠.
다만 set user id bit이 설정된 실행파일, setuid 등의 함수가 내부적으로 사용된 경우를 빼고는...
질문에 관해서 조금 헛갈리시는 부분이 있는 거 같은데요.
파일 - 이건 ls 등으로 보이는 하드 디스크상의 파일을 의미하구요.
이미지 - 이건 파일을 실행 시켰을 때 메모리로 올라간 실행코드, 스택 힙을 포함하는 개념..
각설하고,
파일은 root의 것이 맞습니다. 그러나, 실행 시킨 사람은 root가 아니죠. jenix가 실행했다면, 실행을 위한 이미지는 jenix의 것이죠. euid는 jenix가 되는 거죠.
동시에 root도 실행 시켰다면, 실행 파일은 하나인데.. 메모리로 로드된 (물론 사용 포트가 달라야 겠지만...) 이미지는 두개가 됩니다. 이 이미지는 root의 것이고 euid는 root가 되는 겁니다.
특별한 경우, 예를 들어 passwd파일 을 수정하는 거, 즉 자신의 비밀번호를 바꾸는 일같은 경우, passwd파일은 루트의 것이고 쓰기는 루트만 가능하죠.
아니라면.. 아무나 다른 사람의 계정 정보를 망가트릴 수 있으니까...
자신의 비밀번호를 변경하면 passwd파일이 수정되는데, 이건 모냐...
내부적으로 setuid, seteuid정도를 사용하는 겁니다. 이것이 사용된 실행파일을 실행할 경우, 실행자의 id와는 관계없이 실행파일의 소유자의 아이디로 euid만 바뀌어 실행합니다.
주절 주절....썼네요. 설명을 쉽게 하느라고 약간은 현실에 안맞는 부분이 있는 것도 같군요.
Do you think that's the air you are breathing now?
지금 책이 없어서 모르겠는데 8장인가... setuid() 관련 함수 설
지금 책이 없어서 모르겠는데 8장인가... setuid() 관련 함수 설명하는 곳에 자세히 설명되어 있어요.
p.s. 퍼미션이 744가 아니라 755같은데요. ^^;
아.. 아핫.. 이제 정확히 이해 됐네요 ^^ 답변들 감사드립니다
아.. 아핫.. 이제 정확히 이해 됐네요 ^^
답변들 감사드립니다 :D
p.s.
4.4절 제목 바로 밑에 ( 77p )
"Every process has six or more IDs associated with it .... (중략) "
이라고 되어있거든요 :shock:
음! 퍼미션은 755 군요 :oops:
---------------------------------------------------------------------------
http://jinhyung.org -- 방문해 보세요!! Jenix 의 블로그입니다! :D
댓글 달기