스틱키비트가 걸려있는 대표적인 곳은 /tmp디렉토리 이구요.. 여러 사용자가 같이 사용하는 디렉토리에는 스틱키비트가 필요합니다.

왜냐하면..음~ 이건 디렉토리의 퍼미션에 대한 이해가 있어야하는건데.. 아신다고 생각하고 간단히 말하겠습니다.

예를들어 어떤 계정이던.. 홈 디렉토리를 보면 계정사용자에게 rwx관한이 주어져 있습니다. 그럼 그 디렉토리에 root가 파일을 하나 만들었다고 가정합니다. 퍼미션은 _rw_r__r__ 이렇게요...

퍼미션대로면 root이외에는 지울 수가 없죠..하지만 그 계정의 사용자는 그 파일을 지울 수가 있습니다. 파일을 지우는건 파일보다 디렉토리의 퍼미션이 우선하기 때문입니다.(디렉토리 퍼미션중에 쓰기가 들어가 있기때문)

그렇다면 여러사용자가 공동작업을 하는 디렉토리의 경우..
사용자들이 파일을 작성할 수 있도록 디렉토리의 권한을 만들어줘야 하죠.. 하지만 이렇게 되면 동시에 다른 사용자의 파일도 지울수 있게 되는겁니다.

이럴때 스틱키비트를 걸어주면 파일을 작성할수는 있지만 남의 파일을 지울 수는 없게되는겁니다.

스틱키비트의 설정법은 절대모르방법만 말씀드리겟습니다.
chmod 777 abc --> 이렇게 절대모드로 퍼미션을 줄때 항상 숫자 3자리만 사용했죠..

스틱키비트를 설정할때는 앞에 한자리가 추가됩니다.
chmod 1777 abc 요렇게요..

여기서 제일 앞자리를 계산하는법은,
4는 setuid, 2는 setgid, 1은 sticky bit입니다.
(setuid와 setgid에 대해서는 다른문서를 찾아보세요~~)

마지막으로 퍼미션을 볼때 소문자 t로 되어있는것과 대문자T로 되어있는 경우가 있는데.. t가 보이는 부분이 원래 타인의 실행권한을 보여주는 자리이죠.. 그런데 t가 있어서 실행권한이 있는건지 없는건지 구별을 못하게되죠.. 그래서 소문자 대문자를 쓰는데요..

대문자로 보이는 경우는 실행권한이 없을때구요, 소문자로 보이는 경우는 실행권한이 있을때입니다.

Sticky Bit 다루기
MS-DOS의 램상주 프로그램(TSR)처럼 실행이 종료된 뒤에도 메모리에 계속 남겨두고 다음
실행시에 상대적으로 실행속도를 빠르게 하도록 설정하는 속성을 Sticky bit(스티키비트)
라고 하며 chmod명령으로 설정할 수 있다.

스티키 비트를 설정하려면 rwx처럼 t(sTicky)를 사용할 수있으며 설정되면 가장 오른쪽의
실행 비트가 t로 표시된다.
# ls -al test
-rw-rw-rw- 1 syhwang syhwang 21 Aug 22 20:30 test
# chmod +t test; ls -al test
-rw-rw-rwT 1 syhwang syhwang 21 Aug 22 20:30 test*

실행속성이 없는 파일에 Sticky bit가 설정되면 대문자 T가 오른쪽에 표시되며
실행속성이 있는 파일에 Sticky bit가 설정되면 소문자 t가 표시된다.

# chmod 1775 test
-rw-rw-r-t 1 syhwang syhwang 21 Aug 22 20:30 test*
위의 명령어도 동일한 효과가 나타난다.

또다른 기능
# ls -al test
-rwxr-xr-x 1 root syhwang 21 Aug 22 20:30 test*
# chmod 4755 test
-rwsr-xr-x 1 root syhwang 21 Aug 22 20:30 test*
다음과 같이 설정하는 경우 test를 다른 User가 수행하는 경우에도
Root의 권한으로 수행되도록 한다.
위와 같은 설정은 실행하는 User가 아닌 파일의 Owner의 권한으로 프로그램이
수행되도록 설정하는 것이다.

     



``sticky" 비트 - 이 비트가 디렉토리에 설정되어 있을 때 그 디렉토리내에서 파일의 언링크 (제거) 및 재명명은 파일 소유자, 디렉토리 소유자 또는 루트만이 할 수 있다. 이는 매우 공통된 유닉스의 확장으로 오픈 그룹의 Single Unix Specification 버전 2 에 명시되어 있다. 초기 유닉스 버전들은 이를 ``save program text" 비트라고 불렀으며 이를 메모리에 상주해야 하는 실행가능한 파일을 가리킬 때 사용하였다. 루트만이 이 비트를 설정할 수 있도록 시스템은 보증했는데 그렇지 않다면 사용자들이 억지로 ``모든 것"을 메모리에 올림으로써 시스템을 파손시킬 수 있을 것이다. 리눅스에서 이 비트는 일반 파일에 아무런 영향을 미치지 않으며 일반 사용자는 자신이 소유한 파일에 대해 이 비트를 변경할 수 있다: 리눅스의 가상 메모리 관리 기법은 이러한 비트를 사용해도 아무런 문제가 되지 않게 한다.


문서 성질의 보존 (Save Text Attribute): (디렉토리의 경우)

"스틱키 비트 (sticky bit)"는 디렉토리에 적용될 경우에는 다른 뜻을 가지게 된다. 디렉토리에 스틱키 비트가 붙을 때에는 사용자는 -- 설령 사용자가 디렉토리에 일반적인 쓰기 허가권이 있더라도 -- 소유권이 있거나 확실하게 쓰기 허가권이 허락된 파일 만 지울 수 있게 된다. 이것은 /tmp 따위의 -- 월드-라이타블이면서도 일반 사용자가 무조건 파일을 지우면 좋지 않을 -- 디렉토리 등을 위해 쓰여진다. 스틱키 비트는 긴 디렉토리 리스팅 (ls -l)에서 t로 표시된다.

Posted by 행복한 프로그래머 궁금쟁이박
TAG

댓글을 달아 주세요

  1. thxpnp 2008.10.27 01:46  댓글주소  수정/삭제  댓글쓰기

    잘보았습니다. 문제가 안된다면 담아가겠습니다

    문제가 된다면 연락주세요.. 출처는 상단에 표기하겠습니다.

  2. BlogIcon 관리자 2008.10.27 16:03  댓글주소  수정/삭제  댓글쓰기

    헐 주소를 남겨주셔야^^;ㅋㅋ