리눅스의 권한에 대해서 알아보자!

Bosees·2021년 11월 8일
0

리눅스

목록 보기
1/1
post-thumbnail

외계어의 출현🧐

개발을 하다 보면 CLI를 통해 터미널을 다루는 경우가 매우 많은데 그중 가장 많이 쓰는 명령어는 폴더 내의 파일의 목록을 불러오는 "ls" 와 폴더 안으로 들어갈 수 있는 Change Directory의 약자인 "cd" 가 아닐까 생각한다. 그중 "ls"명령어에 "-l" 옵션을 추가하게 되면 그림과 같이 빨간 박스 안에 알 수 없는 외계어가 출연한다.

보통 개발하시는 분들은 저 빨간 박스가 권한과 관련된 상태를 보여준다는 건 대부분 알 것이다. 하지만 디테일하게 저게 뭔지 일일이 기억하기에는 공부해야 할 것들이 너무나도 많고 굳이 공부하지 않아도 필요할 때 찾아보면 되는 거라 그냥 무심코 지나친다. 이 글을 통해 확실히 정리해 두고 굳이 찾아보지 않고 당연하게 알고 있는 지식으로 남길 바란다.

왜 권한을 부여했을까?

만약 리눅스 시스템의 모든 파일이, 그 종류 또는 쓰임새와 상관없이 읽기, 쓰기, 실행 가능하게 만들어진다면 잘못된 명령어 사용으로 시스템 운영에 중요한 역할을 하는 파일을 삭제하거나 변경할 수 있는 요인이 되기 때문이다. 이러한 경우를 방지하기 위해 파일의 중요도마다 알맞은 권한을 개별적으로 지정할 수 있도록 만들어 안전성을 보장하는 것이다.

3개의 그룹으로 나눈 까닭은?

그림에서 크게 3그룹으로 나눌수 있다.

  • 루트 유저(초록,파랑,주황) : 파일을 소유한 사용자.
  • 그룹 유저(남색) : 특정 그룹의 소속된 사용자.
  • 다른 유저(핑크) : 그 외 사용자들(others).

왜 이렇게 나누어 놨을까? 생각해보면 간단하다. 누군가가 외부에서 내 컴퓨터에 접근해 마음대로 파일을 바꾸어 버린다면 어떻게 하겠는가... 진짜 큰일이 날 수도 있다!🙄
그러므로 3개의 그룹으로 나누어 권한을 분리시켜놨다.

예를 들어 로컬의 할당 되어있는 DNS 서버 내의 IP를 바꿔치기 해서 가짜 사이트로 유도하는 해킹 방법이 있는데 이를 방지 할 수 있도록 다른 유저의 대한 권한은 쓰기 권한이 기본적으로 주어지지 않은 걸 확인 할 수 있다.

권한을 바꾸려면?🤨

"chmod"라는 명령어가 있다. 이 명령은 파일의 권한을 변경할 수 있게 만들어주는 명령어인데 "Change" 와 "mode"의 앞글자를 조합하여 만들었다.

여기서 "mode"란 세 가지 권한(읽기, 쓰기, 실행)과 각각의 권한을 지정할 대상(루트 유저, 그룹, 그외)을 포함한 파일의 속성을 "mode"라고 지칭한다.
그러므로 chmod 명령을 사용하여 파일의 모드(mode)를 변경한다는 것은 파일의 권한을 변경한다는 것과 같은 의미를 가진다.

모드를 변경할 수 있는 방법중 대표적인 8진수 형식으로 파일 모드를 지정하는 방법이 있다.

"8진수" 값을 사용하는 방법은 각 권한(rwx)을 8진수 형태의 숫자 값으로 변환하여 한번에 지정하는 방법이다.

각 그룹의 알맞은 권한을 8진수로 표현하여 루트 유저, 그룹 유저, 그 외 유저를 한꺼번에 지정하는 코드의 예제이다.

다음 그림을 보면 어떻게 숫자를 넣어줘야 할지 명확하게 표로 정리해놓았기 때문에 좀 더 직관적으로 알 수 있을 듯 하다.

profile
블록체인 프론트엔드 개발자

0개의 댓글