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
: