리눅스 권한이란 무엇인가?
리눅스 OS는 디렉토리 및 파일에 대한 권한이 존재한다.
ls -al 명령어를 입력해보자
그럼 위와 같이 가장 왼 측에 권한이 나온다. 가장 좌측은 파일의 형태를 의미하고 그 후로는 사용자의 권한, 그룹의 권한, 다른사람의 권한이 나오게 된다.
r은 read(4), w는 write(2), x는 execute(1) 즉 읽고 쓰고 실행하는 권한이라고 할 수 있다.
즉 755의 경우 소유자만 모든 권한을 가지고 그룹과 나머지 사용자는 읽기와 실행할 수 있는 권한만 가지는 것이다.
이는 우리가 잘 알고 있는 사실이다. 즉 이 권한이 없으면 파일을 실행하는 것, 수정하는 것 등 수행이 제한된다.
리눅스 특수 권한은 무엇인가?
리눅스에는 특수권한이라고 불리는 SetUID, SetGID, StickyBit 가 존재한다.
이 세 가지 권한 모두 실행에 관련된 권한으로 적용하게 되면 위에서 언급한 실행 자리에 그 기능들이 위치하는 것을 볼 수 있다.
이 셋은 각자 순서대로 UID는 소유자의 실행 권한, GID는 그룹의 실행권한 StickyBit는 다른 사용자의 실행 권한에 기호가 들어가게 된다.
기존의 실행권한 x가 있다면 소문자 각각 UIDGID는 s, StickyBit는 t가 들어가게 된다. 하지만 기존에 x 권한이 없다면 각각 대문자 S, S, T가 들어가게 된다.
이 특수권한을 주려면 어떻게 해야할까?
사실 우리가 알고 있는 권한 즉 Chmod 777의 경우 가장 좌측이 0인 것이다. 즉 특수 권한 역시 s,s,t (4,2,1)의 8진수 1 자리를 가지는 것이지만 평소에는 특수권한을 주지 않기 때문에 이를 생략하는 것이다.
그렇다면 UID 권한을 주려면 4777, GID의 권한을 주려면 2777, StickyBit 권한을 주려면 1777 모든 권한을 주기 위해서는 7777을 주어야 함을 알 수 있다.
SetUID가 무엇인가?
실제로 Linux를 사용하는 사용자의 권한에서 root 소유자의 권한으로 실행하는 권한이다.
이렇게 4644 즉 SetUID에 대한 권한을 주게 되면 실제 사용자의 권한에 대문자 S 권한이 들어간 것을 확인할 수 있다.
SetGID가 무엇인가?
이는 Linux 사용자가 실행파일을 실행할 시 그룹의 권한으로 실행하는 것을 의미한다.
즉 파일이 소유자의 것이 아닌 소유자의 UID로 변경 된다는 것이다.
이렇게 2644 GID에 대한 권한을 주게 되면 그룹의 실행 권한에 S가 들어간 것을 확인할 수 있다.
StickyBit란 무엇인가?
StickyBit란 다른 사람의 파일을 변경할 수 없게 하는 것이다.
원래 디렉토리의 o에 7의 권한을 가지게 된다면 디렉토리 내의 파일의 o에 대한 권한이 없더라도 다른 유저가 그 파일에 대해 강제적으로 파일을 수정할 수 있다.
StickyBit는 그걸 막는 역할을 한다. 즉 완벽한 형태의 공유 디렉토리의 개념을 위한 것이다. 즉 디렉토리로의 접근은 가능하지만 파일은 수정할 수 없는 것이다.
누구라도 디렉토리를 사용할수 있지만 그 내의 파일은 건드리지 못하도록 사용할 수 있는 권한인 것이다.
이렇게 1755 명령을 주어서 test에 t 가 들어간 것을 확인할 수 있다.
이는 기존에 x 권한이 있으므로 소문자가 들어간 것이다.
출처
https://mamu2830.blogspot.com/2019/10/setuid-setgid-sticky-bit.html
'[Linux]' 카테고리의 다른 글
Network - Ping 칠 때 DUP! 뜨는 현상 (0) | 2023.08.24 |
---|---|
DNS란무엇인가? (0) | 2023.08.17 |
리눅스 메인보드 변경 시 네트워크 설정 문제 (0) | 2023.08.14 |
Linux ) tar란 무엇인가? (8) | 2023.08.13 |
CentOS 7 사용자 관리 (7) | 2023.08.11 |