SetUID, SetGID, Stickybit 실무 다루기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,285 조회
- 0 추천
- 목록
본문
SetUID, SetGID, Stickybit 실무 다루기
먼저, SetUID, SetGID 그리고 Stickybit에 대하여 실제 예를 들어서 설명해 보도록 하겠다. 패스워드를 변경하기 위해 사용하는 명령어인 passwd라는 명령어는 /bin/bin/passwd에 명령어 형태로 존재한다.
그리고 일반사용자들이 /usr/bin/passwd명령어를 실행하여 /etc/passwd 또는 /etc/shadow파일에 저장되어 있는 자기자신의 패스워드를 변경한다. 물론 이 명령어는 계정을 가진 사용자라면 누구나 사용가능하다. 다음 3개의 파일에 대한 퍼미션을 확인해 보십시요.
[root@sulinux
~]# ls -l /usr/bin/passwd |
위의 예에서 알 수 있듯이 계정사용자의 정보를 보관하고 있는 파일은 /etc/passwd와 /etc/shadow파일이다. 그리고 이 파일들의 퍼미션은 각각 644, 그리고 400이다.
즉, root사용자외에 일반사용자는 변경할 수 없는 퍼미션이다.
단 수정가능한 사용자는 이 파일의 소유자인 root만이 가능하지만, 흔히 계정을 가진 사용자라면 누구나 이 파일에 있는 자신의 패스워드를 변경할 수 있다.
좀 이상하지 않습니까? 일반사용자들은 분명히 /etc/passwd파일과 /etc/shadow파일을 변경할 수 없음에도 불구하고 /usr/bin/passwd라는 명령어를 이용하여 /etc/passwd파일과 /etc/shadow파일의 내용을 수정할 수 있다.
이것의 비밀은 SetUID라는 것에 있다. 즉, 위에서 보시는 바와 같이 /usr/bin/passwd명령어파일은 root소유로 되어 있고 또한 SetUID가 설정(s표시)되어 있다.
따라서 일반사용자들이 /usr/bin/passwd명령어를 실행하여 /etc/shadow파일에 있는 자신의 패스워드를 변경하려고 할때에 실행시킨 일반사용자의 권한으로 실행되는 것이 아니라 /usr/bin/passwd명령어파일의 소유주인 root권한으로 실행이 된다. 따라서 일반사용자들도 /usr/bin/passwd명령어를 이용하여 /etc/passwd파일과 /etc/shadow파일을 수정하여 자신의 패스워드를 변경할 수 있는 것이다.
즉, 특정파일이나 명령어에 SetUID가 설정되어 있다면 그 파일(명령어)을 실행할 때에는 실행시킨 사용자의 권한으로 실행되는 것이 아니라 그 파일(명령어)의 소유자의 권한으로 실행된다. 이것이 SetUID의 의미이며 효과이다.
그리고 SetUID와 SetGID 그리고 Stickybit는 일반 퍼미션외에 다른 방법으로 그 설정을 표시하고 있다.
4XXX : SetUID를 의미함. (XXX는 일반퍼미션)
2XXX : SetGID를 의미함. (XXX는 일반퍼미션)
1XXX : Sticky-bit를 의미함. (XXX는 일반퍼미션)
참고로 Sticky-bit설정은 대부분 /tmp 디렉토리에 설정되어 있는데, 가장 흔한 용도는 공용디렉토리로 사용하기 위한 것이다.
즉, Sticky-bit로 설정된 디렉토리는 모든 사용자가 write가능하며 write된 파일은 그 사용자의 소유로 생성 된다. Sticky-bit 때문에 가능한 것이지요. 물론 삭제할 수 있는 권한 또한 root와 소유자만이 가능하다.
따라서 사용자들에게 공용으로 사용될 디렉토리를 Sticky-bit로 설정해두면 이런 것들이 가능하게 된다. 자, 그럼 이제부터 SetUID와 SetGID 그리고 Stickybit의 설정법에 대해서 알아보도록 하겠다.
관련자료
-
이전
-
다음