시스템 보안

6. 리눅스 파일 권한 (2)

JNU 2021. 12. 21. 18:41
반응형

지난번에 이어서 리눅스 권한에 대해 문제를 풀어보도록 할께

그리고 SETUID, SETGID, stickybit에 대해 알아보도록 할께!

 

 

7. test2,test4 사용자만 daejeon1.txt, daejeon2.txt 읽기 허용

 

참고로 daejeon1.txt와 daejeon2.txt는 korea2 디렉토리에 있어!

korea2 디렉토리에 접근을 먼저해야 하니까 cd와 ls-l 명령은 기본적으로 해야되니깐,

korea2 디렉토리의 group 권한은 r-x로 설정하고

group 소유자를 test2로 설정을 해야겠지?

그리고 test2 group 계정에 test4 계정을 추가해줘서 test4도 test2의 group권한을 쓰도록 해줘야 돼

 

 

그리고 daejeon1,daejeon2.txt 파일의 group 소유자를 test2로 바꿔줘야 해

그래야 group 권한을 부여했을 때 test2와 test4가 파일들을 읽을 수 있어

 

 

이제 다 설정을 했으니 putty로 test2와 test4로 접속해서 

파일들을 읽을 수 있는지 확인해보자

 

test2,test4 모두 파일을 읽을 수 있지? 대신 수정은 안돼! w권한이 없거든!

 

 

8. seoul1.txt, seoul2.txt 파일을 모든 사용자는 읽기,쓰기, 실행이 가능하나,
삭제는 test3만 허용

 

자 이제 여기서 바로 우리가 배워야할 sticky bit 개념이 나오는데

특수권한 bit 중의 하나인 sticky bit는 어떤 상황에서 쓰는지 알아야해!

그 전에  특수권한인 SETUID, SETGID도 같이 알아보도록 할께

 

SETUID=4000 setuid가 부여된 파일을 실행하면 해당 파일의 소유자 권한을 사용자는 갖게 된다.
SETGID=2000 setgid가 부여된 파일을 실행하면 해당 파일의 그룹 권한을 사용자는 갖게 된다.
StickyBit=1000 모든 사용자에게 쓰기 권한이 부여되었더라도 파일 소유자나 디렉토리 소유자만 삭제할 수 있다.

 

sticky bit는 주로 디렉토리에 설정을 많이 해

왜냐면, 해당 디렉토리 안에 존재하는 파일의 생성과 삭제는 디렉토리 권한에 달려있거든

따라서 파일의 생성과 삭제가 무분별하게 이뤄지지 않도록 방지하기 위해 sticky bit를 설정하는거야

 

 

자! 그렇다면 우리는 seoul 파일들을 어떻게 설정해야 test3 사용자만 삭제시킬 수 있을까?

1. korea1 디렉토리 소유자를 test3 로 바꿈 (chown test3 korea1)

2. korea1 디렉토리의 허가권을 1777로 바꾼다. (chmod 1777 korea1)

sticky bit가 설정되었으니, 이제 test1,test2,test3 계정으로 진입해서 한번 파일들을 삭제시켜 볼께!

test3만 삭제가 가능하네!

 

test3만 파일을 삭제할 수 있고 나머지는 거부된 것을 볼 수 있지?

그래서 보통 sticky bit는 파일을 안전하게 지키기 위해서 설정을 해놓은 경우가 많아

무엇보다 중요한 것은 모든 사용자에게 쓰기 권한이 부여된 상황에서도 

해당 디렉토리에 sticky bit가 부여된 것만으로도 삭제만큼은 막을 수 있다는 것을 보여주고 있어

물론 파일의 수정을 막고 싶다면 개별적으로 파일의 권한에 w 권한은 빼주는 것이 맞겠지?

 

 

 

그렇다면 SETUID는 언제 사용할 수 있을까?

그 예시가 바로 비밀번호 변경이야

jinwoo 라는 계정의 비밀번호를 바꾸면 다음과 같이 비밀번호를 바꿀 수 있는 것 보이지?

 

 

password를 변경하거나 인증하는 파일은 /usr/bin/passwd 라는 파일이야

이 파일의 권한을 한 번 자세히 살펴봐

현재 setuid가 설정되어있다는 것을 볼 수 있을거야

 

 

그렇다면 여기서 setuid 설정을 빼보도록 할께

현재 permission 값은 4755니까 755로 변경하고 

jinwoo 계정에서 비밀번호를 바꿔보는 작업을 해볼께

setuid가 없어졌으니 jinwoo 계정에서 비밀번호 변경 작업은 실패가 되어야 정상이야

chmod 755로 해당 파일의 권한을 바꿔놓고...

 

jinwoo 계정의 비밀번호를 바꾸려고 했는데 실패!

 

자 이렇듯이 비밀번호 변경과 인증을 수행하는 파일은 setuid를 사용한다는 것을 알아봤어!

setuid는 주로 root권한을 가진 파일들이 많이 설정이 되어 있기 때문에 

익명의 사용자가 해당 파일로 접근하게 되면 보안상 약점으로 활용되기 쉬운 부분이야

또 리눅스에서 파일권한과 특수권한은 보안상 굉장히 중요한 부분이니까

저번에 배운 공부내용과 오늘 배운 내용은 꼭 암기하고 잘 활용할 줄 알아야 해!

아무튼 오늘도 여기까지~ 끝!!

 

반응형