Real/Effective ID 에 관해서..

jenix의 이미지

안녕하세요..

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: )

운형의 이미지

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() 관련 함수 설명하는 곳에 자세히 설명되어 있어요.

p.s. 퍼미션이 744가 아니라 755같은데요. ^^;

jenix의 이미지

아.. 아핫.. 이제 정확히 이해 됐네요 ^^

답변들 감사드립니다 :D

p.s.

4.4절 제목 바로 밑에 ( 77p )

"Every process has six or more IDs associated with it .... (중략) "

이라고 되어있거든요 :shock:

음! 퍼미션은 755 군요 :oops:

---------------------------------------------------------------------------
http://jinhyung.org -- 방문해 보세요!! Jenix 의 블로그입니다! :D

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.