chmod suid
OS/리눅스 & 유닉스 2012. 2. 11. 15:29질문하신 s 는 SUID 를 뜻합니다.
SUID(Set User ID) 에 대해 설명을 드릴께요.
아래에 실제로 어떻게 사용이 되는지 테스트 해 볼 수 있도록
실습예제도 첨부합니다.
'chmod 4544 파일명' 에서
초록색으로 표시한 첫번째 부분은 아래 3가지의 조합을 나타냅니다.
- 4 : set user ID
- 2 : set group ID
- 1 : sticky attributes.
set user id 는 해당 파일의 소유자(user)로 셋팅을 한다는 말입니다.
참고로,
-r--r--r-x 에 set user ID 와 set group ID를 설정하면,
-r-Sr-Sr-x 가 됩니다. (S가 대문자)
-r-xr-xr-x 일 경우에 set user ID 와 set group ID를 설정하면,
-r-sr-sr-x 가 됩니다. (s가 소문자)
--------------------------------------
< set user id 사용 예 >
1. /bin/ping 권한 확인
자주 사용하는 ping 의 소유자(user)와 퍼미션(permission)을 확인해 보겠습니다.
ls -l /bin/ping 해보면 아래와 같습니다.
-r-sr-sr-x 1 root root 28628 1월 25 2003 /bin/ping
permission은 6555 입니다.
root root 에서 왼쪽이 소유자(user) 이고 오른쪽이 그룹(group)입니다.
-r-xr-xr-x 에 set user ID 와 set group ID가 설정된 것입니다.
-r-xr-xr-x 는 555 이고
set user ID 는 4 ,
set group ID 는 2 이므로
(4+2)555 => 6555
그러므로,
/bin/ping 은 set user ID, set group ID 가 설정되어 있고
파일 소유권은 root 에게 있다는 것을 알 수 있습니다.
2. SID, GID 제거 후 테스트
set user ID 와 set group ID를 제거한 후 테스트를 해 보겠습니다.
chmod 555 /bin/ping (root 관리자로)
(set user ID 와 set group ID가 없어집니다.)
이제 root 유저가 아닌 일반 계정은 ping 명령을 사용하지 못합니다.
[user01@localhost ]$ ping daum.net
ping: icmp open socket: Operation not permitted
다시 말해, set user ID , set group ID 설정 유무에 따라
일반 사용자가 ping을 사용가능 여부가 결정된다는 겁니다.
원래대로 복구하기 위해
chmod 6555 /bin/ping (root 관리자로)
이제 일반 사용자도 ping을 사용할 수 있습니다.
결론
ping 프로그램은 root 권한으로 실행되어야 작동이 되는 프로그램입니다.
프로그램을 일반사용자가 실행을 하면 일반사용자의 권한으로 실행이 됩니다.
일반 사용자가 아닌 root 권한으로 실행되게 하기 위해서는
set user ID 와 set group ID를 설정해야 합니다.
이런 용도로 사용되는 것이 SUID입니다.
'OS > 리눅스 & 유닉스' 카테고리의 다른 글
shell 조건문 (0) | 2012.02.11 |
---|---|
shell 조건 연산자 (0) | 2012.02.11 |
egrep 정규식 (0) | 2012.02.11 |
The GNU C Library Reference Manual (0) | 2012.02.10 |
vmstat (0) | 2012.02.09 |