확장권한 설정

Woo Yong·2023년 8월 8일
0

Linux

목록 보기
6/7
post-thumbnail

확장권한설정


확장 권한을 설정할 때는 `chmod명령어를 사용합니다.
표준 권한을 부여할때와 동일하게 심볼릭(Symbolic)방식과 8진수(Octal)방식으로 설정할 수 있습니다.

✔︎ 심볼릭 방식


권한설정심볼릭
setuid 설정u+s (u-s)
setgid 설정g+s (g-s)
sticky bit 설정o+t (o-t)

/bin/passwd파일로 확인해보자.

사진을 보면 /bin/passwd파일은 setuid가 설정되어 있는 파일이었다.(rws)
그리고 chomod명령어를 통해서 u-s해줌으로써 rws -> rwx로 변경되어 setuid 설정이 해제 된 것을 볼 수 있다.


✔︎ 8진수 방식


확장권한은 8진수 방식으로 설정할 때는 chmod [xxxx] file 형식으로 사용한다. 표준권한chmod [xxx] file

4개 x 중 첫 번째 x가 확장권한을 나타낸다.
그리고 8진수로 표현하므로 2진수 비트 3자리로 표현하게된다. (2의 3승 헷갈릴 수 있다...)
3자리 중 첫번째는 setuid, 두번째는 setgid, 세번째는 sticky bit를 표현한다.

이해를 돕기 위해 정리하면 확장권한을 설정하기 위해서는 8진수 4자리로 표현한다. 그리고 4자리 중 첫번째를 확장권한을 설정할 때 이용하는 것이다.
그리고 첫번째 8진수(2진수 3자리) 중 첫번쨰는 setuid, 두번쨰는 setgid, 세번째는 sticky bit인 것이다.

이처럼 각 위치에 0과 1로 표시해 권한을 설정한다.

100의 경우는 setuid
010의 경우는 setgid
001의 경우는 sticky bit

여기까지 이해를 했다면 거의 다 한것이다. 이처럼 다시 0과 1로 변환 한 값을 8진수로 변환시키면

100의 경우는 4 (setuid)
010의 경우는 2 (setgid)
001의 경우는 1 (sticky bit)

마지막으로 chmod [xxxx] file중 첫번째 값으로 확장권한을 설정한다고 했기 때문에

setuid를 지정할때는 chmod 4000 file
setgid를 지정할때는 chmod 2000 file
sticky bit를 지정할때는 chmod 1000 file

만약 해제하고 싶다면 8진수 앞에 -기호를 붙이면 된다.

/run/log/journal디렉토리로 예시를 들어보자.

사진을 보면 /run/log/journal디렉토리에는 setgid설정되어있었다. 그리고 setgid설정을 해제하기 위해서 chmod -2000 /run/log/journal명령어를 통해 setgid설정을 해제했다.


-2000을 한 이유는 setgid는 2비트 3자리 중 2번째를 나타내기 때문에 010이다. 그리고 010을 8진수로 변환하면 2이기 때문에 4자리 중 첫번째 자리를 2로 설정하고, 나머지 3자리(표준권한)는 수정을 하지 않고 설정권한(setgid)만 해제할 것이기 때문에 -2000을 설정해주었다.


📌 하지만 다시 setgid를 설정하기 위해서 chmod 2000 /run/log/journal명령어를 작성하면 2의 값으로 setgid를 설정해주고 나머지 표준권한은은 모두 0으로 설정하는 것이므로 d-----S---가 되므로 조심하자

profile
Back-End Developer

0개의 댓글