시스템/LinuxSystem2011. 3. 5. 23:50

< SetUID > - 4000

- 파일 및 명령어가 실행되는 동안에는 실행한 사용자가 아니라 파일의 소유주의 권한을 부여하게 되는 퍼미션 값

- 그룹 소유주의 퍼미션 값에 실행의 값인 'x'가 아닌 's'기호가 대신 명시된다.

- 절대 모드 표현에서 일반 퍼미션에 4000을 더하거나 뺄 수 있다

 

< SetGID > - 2000

- 파일 및 명령어가 실행되는 동안에는 그룹 소유주의 권한을 갖게 되는 퍼미션 값

- 실행 파일 뿐만 아니라 디렉토리에도 명시 될 수 있다.

- 그룹 소유그룹의 퍼미션 값에 실행의 값인 'x'가 아닌 's'기호가 대신 명시된다.

- 절대 모드 표현에서 일반 퍼미션에 2000을 더하거나 뺄 수 있다.

 

< Sticky bit > - 1000

- 모든 사용자가 읽고, 쓰고, 실행이 가능한다.

- 단 Sticky bit 퍼미션이 적용된 디렉토리에서는 누구나 파일을 스고 실행할 수 있지만, 파일 삭제는 오직 소유주만 할 수 있다.

- 나머지 사용자의 퍼미션 값에 실행의 값인 'x'가 아닌 't'기호가 대신 명시된다.

- 절대모드 표현에서 일반 퍼미션에 1000을 더하거나 뺄 수 있다.


특정파일에 SetUID Bit 설정하기


이번에는 특정파일에 SetUID Bit를 설정하는 방법에 대해서 설명 하겠습니다. 특정 파일에 SetUID Bit가 설정되어 있다면 다른 사용자들이 그 파일을 실행하였을 경우 실행되는 동안에는 실행시킨 사용자의 권한이 아닌 파일의 소유자권한으로 실행이 됩니다.


이 퍼미션을 설정하는 방법은 4755, 4644, 4750등과 같이 지금까지 설명한 일반퍼미션앞에 4를 붙이시면 됩니다.


아래의 예는 testfile에 일반 퍼미션 755와 함께 SetUID Bit(4)를 설정한 예입니다.





위의 결과를 보시면 testfile의 퍼미션설정의 소유자 실행퍼미션 자리에 s라는 문자가 설정된 것을 보실 수 있을 것입니다. 파일의 소유자 실행퍼미션 자리에 s라는 문자가 있다면 다른 사용자들이 이 파일을 실행하더라도 파일의 소유자권한으로 실행이 됩니다.


참고로 다음의 예에서 설명하는 SetGID는 일반퍼미션앞에 2를 붙이시면 되고 Sticky Bit1을 붙이시면 됩니다.



특정파일에 SetGID Bit 설정하기


이번에는 SetGID를 설정해 보도록 하겠습니다. 앞의 SetUID와 동일한 방법으로 설정하지만 일반 퍼미션앞에 4가 아니라 2를 붙이면 SetGID가 설정됩니다.


아래의 예는 testfile에 일반퍼미션 755와 함께 SetGID Bit(2)를 설정한 예입니다.




chmod 명령어가 실행된 후에 testfile의 그룹소유자의 실행퍼미션 자리를 보시면 s라는 문자가 설정된 것을 확인할 수 있습니다.


그룹소유자의 실행퍼미션자리에 s로 설정되면 SetGID로 설정되었음을 의미합니다. SetGID가 설정된 파일을 다른 사용자가 실행을 시키면 실행시킨 사용자의 권한으로 파일실행이 되는 것이 아니라 파일의 소유자그룹권한으로 실행이 됩니다.


특정 디렉토리에 Sticky Bit 설정하는 퍼미션 설정하기


이번에는 특정 디렉토리에 Sticky Bit를 설정하는 예를 보도록 하겠습니다. Sticky Bit라고 하면 조금은 생소하게 느끼시는 독자분이 계실지는 모르겠습니다.


리눅스에서는 흔히 /tmp 디렉토리를 Sticky Bit로 설정 합니다. /tmp디렉토리내에서 특정 파일을 생성하면 생성한 사용자의 소유로 파일이 생성됩니다.

그리고 다른 사용자가 /tmp디렉토리에 다른 파일을 생성하면 역시 생성한 사용자의 소유로 파일이 생성됩니다. 파일을 삭제할 때에도 생성한 사람만이 삭제를 할 수가 있습니다.


이런 디렉토리를 흔히 공유디렉토리라고 합니다. , 파일생성을 아무나 할 수 있으며 생성된 파일은 각각 생성한 사람의 소유로 되며 수정, 삭제 또한 생성한 사람만이 그 파일을 수정하고, 지울 수 있도록 되어 있습니다. 이런 "공동장소"로 사용되는 디렉토리설정을 하기 위하여 Sticky Bit를 설정합니다.


설정하는 방법은 일반퍼미션앞에 1을 붙이시면 됩니다.


다음의 예를 보시기 바랍니다.





위의 예에서 testdir이라는 디렉토리의 퍼미션을 1755로 설정하면서 Sticky Bit를 부여하였습니다. 부여한 결과 다른사용자 실행 퍼미션자리에 보시면 t라는 문자로 셋팅된 것을 확인하실 수 있습니다. t라는 문자의 의미가 Sticky Bit라는 것을 의미합니다.


이제부터 testdir이라는 디렉토리는 공유목적으로 사용할 수 있도록 Sticky Bit 설정이 된 것입니다.


, bible이라는 사용자가 testdirbiblefile이라는 파일을 생성하였다고 하면 이 biblefilebible이라는 사용자의 소유로 생성되고, 삭제와 변경도 bible이라는 사용자만이 할 수가 있습니다.


그리고 sspark이라는 사용자가 testdirssparkfile이라는 파일을 생성하였다고 하면 이 ssparkfilesspark이라는 사용자의 소유로 되고, 삭제와 변경도 sspark이라는 사용자만이 할 수가 있습니다. 물론 다른 사용자들도 모두 동일하게 적용이 됩니다.


하지만, Sticky Bit가 설정된 디렉토리내의 파일들에 대하여 root는 언제든 마음대로 변경,삭제등이 가능합니다.


여러분 이제 파일과 디렉토리의 퍼미션에 대해서 어느정도 자신감이 생겼으리라 생각합니다. 파일과 디렉토리의 퍼미션설정에 대한 필자의 소임을 마치고 이제 실무에서 적용하는 것에 대해서는 여러분들께 맡기도록 하겠습니다. 부디 필자의 소망처럼 정확한 이해와 효율적인 사용으로 힘있고 강력한 서버관리자가 되시길 바랍니다.


[출처] 슈퍼유저코리아 - http://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1235

Posted by @dmin @dmin

댓글을 달아 주세요