상세 컨텐츠

본문 제목

리눅스 파일 권한 명령어 정리(chmod, chown, chgrp)

Study/Linux

by bing_su 2021. 1. 2. 15:09

본문

반응형
SMALL

리눅스에서 파일, 디렉토리 권한을 설정, 변경하고 소유권을 변경하는 것을 살펴보려고 한다.

 

[ 리눅스에서 파일 / 디렉토리 권한 확인 ]

ls -al 명령어를 통해 파일과 디렉토리 리스트들을 출력하면 권한을 확인할 수 있다.

첫 글자가 d로 시작하면 디렉토리라는 의미로, - 일 경우는 일반 파일로 해석하면 된다.

이 외에도 첫번째 문자의 의미를 정리하면 아래와 같다.

d 디렉토리(directory)
b 블록 타입 특수 파일(block special)
c 문자 타입 특수 파일(character special)
l 심볼릭 링크(symbolic link)
p 파이프(pipe)
s 소켓(socket)
- 일반 파일(regular file)

 

첫 글자를 제외한 뒤의 9개의 문자는 3글자씩 끊어서 소유자, 그룹 사용자, 기타 사용자의 권한을 표시한다. 3글자씩 끊는 이유는 파일에 부여할 수 있는 권한은 기본적으로 읽기, 쓰기, 실행, 3가지의 형태가 있기 때문이다. 각 권한을 정리하자면 아래와 같다.

- 읽기 권한(r): 파일을 열어볼 수 있고, 파일의 수정은 불가능하나 복사는 가능하다.

- 쓰기 권한(w): 파일에 덧붙여 쓸 수 있다. 즉, 읽기 권한과 쓰기 권한을 같이 가진 rw_ 형태의 파일이라면 파일 편집이 가능하다는 것이다. 읽기 권한 없이 쓰기 권한만 있다면 기존의 파일 뒤에 정보를 덧붙일 수 있는 것만 가능하다.

- 실행 권한(x): 파일을 실행할 수 있다. 

Ex) 주로 쓰는 파일 권한 표시

--- : 접근 불가능한 파일

r-- : 읽기만 가능한 파일

r-x : 읽기와 실행이 가능한 파일(프로그램 같은 파일)

rw- : 읽기와 쓰기가 가능한 파일(일반 파일)

rwx : 모든 권한을 가진 파일

 

디렉토리에 대한 파일 권한 역시 일반 파일과 동일하다. 디렉토리 권한에 대해 몇 가지 상황을 생각해 보자.

 

1. 디렉토리에서 쓰기 권한(w)이 없다면 파일을 수정하고 생성하는 것 등이 불가능하다. 

2. 실행 권한(x)이 없다면 디렉토리로 접근하는 것(cd)가 불가능해진다.

3. 읽기 권한(r)만 부여할 경우 디렉토리에 저장된 항목은 조회할 수 있지만 해당 디렉토리에 저장된 파일은 조회할 수 없다. 즉, 어떤 파일이 있다는 것만 알 수 있다.

4. 디렉토리에 실행 권한(x)만 부여할 경우, 디렉토리 내 파일 목록을 볼 수 없다. 이 말은 읽기 권한(r)이 없어 ls -al로 조회해도 디렉토리 내의 파일은 알 수 없다. 하지만 실행 권한(x)은 있어 어떤 파일이 저장되어 있는지 이미 알고 있다면 파일을 조회하는 것은 가능하다. 주의할 점은 이 경우에는 파일의 경로와 이름을 정확하게 입력해야 조회할 수 있다. 

5. 디렉토리에 쓰기 권한(w)만 부여한 경우는 아무 권한도 부여하지 않은 상태와 동일하다.

 

9글자의 권한 뒤에 나오는 출력 결과는 각각 링크수, 사용자(소유자), 그룹, 파일크기, 수정시간, 파일이름을 나타낸다.

 

[ 파일 권한 숫자 ]

위에서 살펴 봤듯이, 파일 권한을 구분하는 경우 크게 3가지로 분류할 수 있다.

읽기(r) Reading 4
쓰기(w) Writing 2
실행(x) Executing 1

이 숫자들은 8진수로 바꿔서 해석을 할 수 있다.

각각 user, group, other에 8진수의 공간이 있다고 보면 된다. 각 자리는 2배씩, 즉, x 권한이 1, w 권한이 2, r 권한이 4가 된다. 따라서 총 합은 7이 되고 r(4), w(2), x(1)을 적절하게 사용해 0~7까지의 수를 만드는 것이 가능하다.

Ex) --------- : 아무런 권한도 없을 경우(000) / rw-r---w- : 642

권한을 기호로 줄 수 도 있지만, 숫자로도 줄 수 있고 이 숫자를 통해 권한을 간편하게 변경할 수 있다.

 

[ chmod를 사용해 권한 부여하기 ]

chmod(change mode): 파일이나 디렉토리에 권한을 수정할 때 사용한다.

 

각 사용자별 파일 권한 변경

: user, group, other, all(전부)에게 권한을 지정할 수 있고, 더하기(+)를 사용해 권한을 추가하고, 빼기(-)를 사용해 권한을 제거할 수 있다. "="으로는 권한을 직접 지정할 수 있다.

 

< 사용 예시 >

chmod g+x [파일명] : 그룹에 실행 권한을 준다.     

chmod o-w [파일명] : 다른 사용자에게 쓰기 권한을 빼앗는다.  

chmod a=rw [파일명] : 모든 사용자에게 읽기, 쓰기 권한을 지정한다.

 

위의 방식은 다른 대상은 건드리지 않고 특정 대상에 대한 권한만 간단하게 지정할 수 있지만, 한꺼번에 수정할 경우에는 번거로울 수 있다. 이럴 때는 위에서 설명한 권한을 나타내는 숫자를 이용해 한번에 권한을 변경할 수 있다.

chmod {user 권한 숫자}{group 권한 숫자}{other 권한 숫자} [파일명]의 형식을 통해 권한을 변경할 수 있다.

< 사용 예시 >

chmod 000 [파일명] : user, group, other에 있는 모든 권한을 제거한다.

chmod 777 [파일명] : user, group, other에 대한 모든 권한을 추가한다.

chmod 743 [파일명] : user에게는 모든 권한이 허용되고, group에는 읽기 권한(r)만, other에 대해서는 실행 권한(x), 쓰기 권한(w)만 준다.

위에서 설명한 바와 마찬가지로 읽기 권한(r)은 4, 쓰기 권한(w)은 2, 실행 권한(x)은 1로 나타낼 수 있고, 필요한 권한을 모두 더한 값으로 각 사용자의 권한을 지정할 수 있다.

 

-R을 사용하면 하위 디렉토리와 그 안의 파일 권한까지 변경할 수 있다. 

Ex) chmod -R 700 [디렉토리명] : 해당 디렉토리 하위에 위치한 모든 파일 및 디렉토리에 user의 읽기, 쓰기, 실행 권한만 주고 나머지의 권한은 없앤다.

[ chown, chgrp를 사용해 파일 소유권을 변경하기 ]

위에서 설명한 chmod 명령어는 파일이나 디렉토리의 권한을 변경하는 역할을 했다.

chown(change ownership): 파일이나 디렉토리의 사용자(소유자)를 변경할 때 사용한다.

chgrp(change group): 파일이나 디렉토리의 그룹을 변경할 때 사용한다.

즉, chown이나 chgrp 모두 파일이나 디렉토리의 소유권을 변경할 때 사용한다.

 

< 사용 예시 >

sudo chown user1 [파일명] : 파일 사용자를 user1으로 변경한다.

sudo chgrp user2 [파일명]  : 파일 그룹을 user2으로 변경한다.

그룹만 변경할 때 chgrp 명령어를 사용한다. 일반 사용자는 자신이 속한 그룹으로만 변경이 가능하다.

sudo chown user3.user3 [파일명] : chown 명령어를 통해 사용자와 그룹을 동시에 변경할 수 있다.

 

이 때, 권한 설정할 때와 같이 -R을 사용하면 하위 디렉토리와 그 안의 파일 소유권까지 변경할 수 있다.

반응형
LIST

댓글 영역