Solaris/기술과 팁
사용자 권한 관리 (set uid, set gid 등)
[건희아빠]
2011. 7. 13. 16:53
출처 : 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