본문 바로가기
[OS]/Linux

[Linux] 권한 관리 명령어 사용 방법(chmod, chown, chgrp)

by METAVERSE STORY 2022. 9. 14.
반응형

 

리눅스는 멀티 운영 체제이다. 여러명의 사용자가 한 시스템에 접근해서 어떤 행위를 할 수 있는 서버 시스템 환경이라는 의미이다. 

여러명의 사용자가 한 시스템에 접속해 작업을 처리하므로 시스템의 중요한 문서나 파일들 같이 보안이 필요한 부분에서 취약점이 드러날 수 있다. 

그러므로 권한 관리가 매우 중요하다. 

리눅스에서는 각 파일 및 디렉토리에 대한 권한 및 소유권을 부여하고 읽고, 쓰고 ,실행할 수 있는 권한을 제어할 수 있다. 그러므로 리눅스 서버 시스템 관리를 하기 위헤서는 꼭 체크하고 넘어가야 한다.

 

 

 

먼저 ls -l을 통해서 해당하는 위치의 파일들의 권한을 살펴 보자.

먼저 맨 앞을 보면 lrwxrwxrwx 와 같은 10자리의 단어를 확인할 수 있다.

이는 권한으로 총 10필드로 구성된다.

 

가장 첫번째 권한은 파일 종류를 의미한다. 

 

파일 종류는 다음과 같다.

- 일반 파일
b 블럭형 장치파일(ex: 하드 디스크)
c character device(장치파일 ex: 마우스, 콘솔)
d 디렉토리
l 링크
p 파이프 파일
소켓 파일

 

그 다음 r, w, x 는 다음과 같다.

r: 읽기(Read) 숫자 4

w: 쓰기(Write) 숫자 2

x: 실행(eXcute) 숫자 1

 

이것은 읽기, 쓰기, 실행 권한을 의미한다.

그리고 2 ~ 10 번째 권한은 3개로 끊어서 해석하는데

2 ~ 4 번째 권한: 소유주(User) 권한

5 ~ 7 번째 권한: 그룹(Group) 권한

8 ~ 10 번째 권한: 나머지(Others) 권한 

 

즉 맨 위 lrwxrwxrwx의 경우

파일 형태는 링크이며 

소유주, 그룹, 나머지 인원 모두 쓰기, 읽기, 실행 권한을 가질 수 있다. 라는 것이다.

이것을 이제 숫자로 표현하면 세자리씩 끊어서 더해주면 777 권한이라고 확인할 수 있다. 

 

 

2번째 위치에 있는 숫자는 링크 수이다. 

즉 권한 맨 앞에 l이 붙는 파일의 개수를 의미한다.

 

3번째 위치에 있는 것은 사용자(소유자) 이다.

현재 가장 위에 있는 이미지에서는 모두 소유자가 루트임을 확인할 수 있다. 

 

그렇다면 이 사진을 확인해 보자. 이 폴더는 현재 ubuntu 사용자의 폴더이다. 이 폴더의 사용자는 현재 ubuntu임을 확인할 수 있다. 

 

4번째 위치에 있는 것은 그룹이다. 이 역시 소유권을 확인할 수 있으며 위의 경우 ubuntu 그룹의 소유임을 알 수 있다. 

 

5번째 위치에 있는 것은 파일 크기이다.

6번째 위치에 있는 것은 파일의 수정 시간이다.

7번째 위치에 있는 것은 파일의 이름이다. 

 

리눅스는 이렇게 ls -l을 통해서 어떤 권한을 누가 소유하고 있는지를 확인할 수 있으며 이를 명령어를 통해서 제어가 가능하다.

 

 

chmod

chmod는 change mode의 축약어로 유닉스와 유닉스 계통 환경 안에서 쓰이는 셸 명령어이다. 이 명령어는 파일들이나 디렉토리의 파일 시스템 모드들을 바꾼다. 그 모드들은 허가나 특별한 모드들을 포함한다. 

chmod의 사용법은 다음과 같이 지정한다.

chmod [옵션] [권한] [변경할 파일 혹은 디렉토리]

 

옵션에는 두가지가 존재한다.

-R: 재귀적으로 파일들과 디렉토리들의 모드들을 바꾼다.

-v: 자세한 모드, 실행되고 있는 모든 파일을 나열한다.

 

또한 chmod의 사용법에는 크게 두가지로 나뉜다.

 

 

문자열 변경

문자를 활용하여 파일의 g(그룹),u(사용자),o(다른 사용자),a(모두)의 권한을 지정할 수 있다.  +, -를 사용하여 권한을 추가하거나 제거하는것 또한 가능하다.

현재 생성한 example 이라는 디렉토리이다.

소유자는 읽기,쓰기,실행이 가능하고 그룹은 읽기, 실행, 나머지도 읽기, 실행만 가능하다. 즉 755라고 할 수 있다. 이를 chmod를 통해서 권한을 바꿔 보겠다. 

먼저 사용자에게 읽기 권한을 제거해 보았다.

sudo chmod u-r example

 

 

그 결과 위에서와 다르게 사용자에게 읽기 권한이 제거가 된 것을 볼 수 있다. 

그 다음에는 그룹에게 모든 권한을 줘봤다. 

 

sudo chmod g+w example

 

그 결과 루트라는 그룹은 모든 권한을 가지게 되었다.

이런식으로 나머지에게 사용하려면 o를 모두에게 적용하려면 a를 + - 를 통해서 권한을 추가하고 뺄 수 있다.

 

 

 

숫자단위 변경

위에서 진행한 것 처럼 숫자를 통해서 각 사용자, 그룹, 나머지 인원에 대한 권한을 줄 수 있다.

즉 chmod 777은 모두에게 권한을 주는 것을 의미한다. 

그렇다면 처음 권한이었던 755 권한을 줘 보겠다. 

sudo chmod 755 example

 

 

그러자 처음처럼 사용자는 모든 권한을 가지고 있고, 그룹과 나머지 사용자는 읽기와 실행 권한만 가지고 있는 것을 확인할 수 있다. 

 

 

 

chown

chown은 change the owner of a file의 줄임말로 유닉스 계통 시스템에서 파일의 소유권을 바꾸기 위해서 사용된다. 대부분의 경우 이는 슈퍼 사용자만이 실행할 수 있다.

 

현재 example 디렉토리를 살펴보면 소유자가 root로 되어 있다. 현재는 사용자만이 모든 권한을 가지고 있다. 이 소유자를 변경해서 디렉토리의 보안을 높이려고 한다면 어떻게 해야 할까?

sudo chown [계정명] [파일명]

 

 

 

소유주가 root에서 ubuntu로 변경 된 것을 확인할 수 있다.

 

 

또한 chown을 통해서 유저와 그룹의 소유주를 모두 변동시킬 수 있다. 

sudo chown [user]:[group] [file]

 

 

위 명령어를 통해서 example 폴더의 그룹과 소유주 모두 변동 되었다는 것을 확인할 수 있다. 

 

 

 

chgrp

chgrp는 유닉스 계열 운영 체제의 일반 사용자들이 파일 시스템 오브젝트에 연결된 그룹을 변경하는 명령어이다. 

위에서 chown이 슈퍼 유저가 사용하는 것이었다면 chgrp는 일반 유저가 사용하는 것이다. 

 

현재 다시 그룹은 root로 변경시켜 놓았다. 

그 후 명령어를 통해 그룹을 변경 시켜 주었다.

chgrp [group] [file]

이는 일반유저가 사용하는 명령어이므로 위의 두 명령어와 다르게 sudo를 입력하지 않아도 진행이 되었다. 

 

 

결과를 확인해 보면 다시 그룹이 ubuntu로 변경 된 모습을 확인할 수 있다. 

 

 

출처

https://wlsvud84.tistory.com/9

 

리눅스 권한 관리 설정 (chmod, chown, chgrp )

안녕하세요 롯사입니다. 이번 시간엔 리눅스 서버 시스템에서 파일과 디렉터리의 권한 설정에 대해서 다뤄보겠습니다. 일단 리눅스는 멀티유저 운영체재(OS)입니다. 그 말인 즉 여러 명의 사용

wlsvud84.tistory.com

 

반응형

댓글