티스토리 뷰

리눅스.LINUX

[CentOS7][초보][특수권한][Sticky bit]

우서진빠빠 2022. 12. 15. 03:56

# stat /tmp 실행 결과

Sticky bit [스티키 비트(1000)]가 설정된 디렉터리는 누구나 파일을 만들 수 있지만 자신의 소유가 아닌 파일은 삭제할 수 없다. 즉 일종의 공유 디렉터리라고 볼 수 있는데 sticky bit 가 붙은 가장 유명한 사례는 유닉스의 임시 파일을 쓰는 디렉터리인 /tmp 이다. 바로 위의 그림~

디렉터리에 스티키 비트를 붙일 때 누구나 읽고, 쓰고, 실행할 수 있도록 777 권한을 줘야 하는데, 다음과 같이 /opt/mytmp 라는 디렉터리 경로에 스티키 비트를 부여하는 구문을 예제로써 보여줄 수 있다. 
 # chmod -R 1777 /opt/mytmp

파일이나 디렉터리의 자세한 정보를 보는 명령어인 stat 를 사용해서 [# stat /tmp] 를 실행하면 Access 부분이 1777 이 지정된 것을 확인할 수 있다. 바로 위의 그림~

 

[Sticky Bit]

 

 

 

- 개념

 

 

 


 : SUID(Set User ID) : 프로그램을 실행할 때 해당 프로그램에 설정되어있는 소유자의 권한으로 실행한다.
 : SGID(Set Group ID) : 프로그램을 실행할 때 해당 프로그램에 설정 되어있는 그룹의 권한으로 실행한다.
 : Sticky Bit : 모든 사용자들에게 디렉토리의 접근과 해당 디렉토리 내에 있는 모든 파일에 대한 읽기(R), 쓰기(W) 권한은 허용하지만 삭제는 해당 파일의 소유자나 절대 권한을 가지고 있는 Root 계정만 할 수 있도록 지정한다. 
 > sticky bit: 파일에 대해서 퍼미션과 관계없이 소유자만 삭제 가능하게 할 때 디렉토리에 other 권한을 제한한다.
 > Other를 대상으로 설정한다.
 > 모든 권한 허가가 가능하지만 삭제는 소유자만 가능하다.
 > chmod o+t dir

 

[Sticky Bit 에 대하여]

 

 

 

 

- 추가+정리 내용

  • 디렉터리에만 지정. 공유디렉토리로 사용됨. 파일 소유자만 파일 삭제 가능. 
  • "다른 사람의 파일을 변경할 수 없다" 이다. "StickyBit"는 다른 사람의 파일을 변경하지 못하게 하는 기능이고, 디렉터리에만 효과가 있다.
  • 이것을 이해하려면 전부터 이야기 했던 "리눅스 권한"에서의 "디렉터리의 권한이 바로 밑 파일까지 적용된다"를 이해해야 한다. 
  • 원래 디렉터리의 o(other)에 "rwx"와 같이 권한이 있으면, 디렉터리 내 파일의 o(other)에 "rwx"권한이 없어도 다른 유저가 그 파일을 강제로 변경할 수 있다고 배웠다
  • "StickyBit"는 그런 걸 일을 막는, 진정한 "공유 디렉터리"를 만들기 위해 사용하는 개념이다. 
  • 여기서 이런 의문이 나올 수 있다. '아니 그러면 디렉터리 o(other)에 "wx"권한을 안 주면 되는 거 아닌가요? 굳이 StickyBit를 왜 쓰나요?' 라고 말이다. 이것은 디렉터리에 o(ohter)에 "wx"권한이 없으면 소유자와 그룹에 속한사람들 말곤 디렉터리 사용을 아예 못하기 때문에 별도의 권한설정이 필요해서이다. 
        참조) 다시 "리눅스 권한" 포스트 필독~~!! https://mamu2830.blogspot.com/2019/09/rwx.html
     >
  • 그렇기에 그 누구라도 디렉터리를 사용할 수 있게, 하지만 디렉터리 내 다른 사람의 파일은 건들지 못하게 하기 위해 "StickyBit"개념을 사용하는 것이다. 
  • 외우는 방법은 "StickyBit"를 디렉터리에 적용하면 "Sticky"란 뜻처럼, 파일이 디렉터리에 딱 붙어있어 소유자 말곤 변경할 수 없게한다! 라고 외우면 좀 쉽다. 
  • 물론 관리자는 제거할 수 있다. 여기서 말하는 관리자란 "StickyBit가 설정된 디렉터리의 소유자" 이다. 심지어 자기자신이 "StickyBit"가 설정된 디렉터리 관리자라면 그 디렉터리 안에 "root"가 만든 파일도 변경이 가능하다.(삭제, 수정 등)
  • 물론 일반 파일도 StickyBit를 설정할 순 있지만, 디렉터리가 아니기 때문에 별 의미가 없다. 
     > 예)  drwxrwxrwt sys sys /tmp
     > 설명) /tmp 디렉토리에는 모든 사용자가 읽기,쓰기, 실행이 가능하도록 777로 권한 설정이 되어 있으며, 추가적으로 Others의 실행 권한이 t이므로 sticky bit가 설정되어 있다. 따라서 /tmp 디렉토리에는 누구나 파일을 생성, 수정 및 읽기가 가능하나, 해당 파일의 소유자 sys 계정 외에는 삭제가 불가하다.
    4755          2755          1755
    rws r-x r-x   rwx r-s r-x  rwx r-x r-t

 

 

[SUID, SGID, Sticky bit 비트 표기 방법]

- suid(4), sgid(2), sticky bit(1)

 > suid와 sgid는 user와 group 퍼미션에 s라고 표시되고 sticky bit는 other 퍼미션에 t라고 표시된다.
 7777: rwsrwsrwt
 4777: rwsrwxrwx (u+s)
 2777:rwxrwsrwx (g+s)
 1777: rwxrwxrwt (o+t)

 


- SUID, SGID, Sticky bit 설정 시 실행(x)부분에 s, S 또는 t, T 로 나타남. 

 > 소문자의 경우 기존의 파일에 실행권한이 부여 되어 있는 경우
 > 대문자의 경우 기존의 파일에 실행권한이 없는 상태에서.... 동작되지 않음을 의미... 
 즉, 여기서 마지막 개념!  "s(SetUID), s(SetGID), t(StikcyBit)" 모두 기존 파일에 실행권한 "x"가 있었다면 소문자 "s, s, t"가 들어가고 , 실행권한 "x"가 기존에 없었다면 대문자 "S, S, T"가 들어가게 된다. 

 

 

 

 

 

 - 다음 "권한변경.삭제-속성변경" -  https://modu4you.com/21

 

[CentOS7][초보][특수권한][Sticky bit]

Sticky bit [스티키 비트(1000)]가 설정된 디렉터리는 누구나 파일을 만들 수 있지만 자신의 소유가 아닌 파일은 삭제할 수 없다. 즉 일종의 공유 디렉터리라고 볼 수 있는데 sticky bit 가 붙은 가장 유

modu4you.com