리눅스 권한 변경 (chmod)

리눅스 또는 맥을 사용하다보면 터미널을 쓸 수 밖에 없는데 간혹 Permission denied와 같이 파일 권한 이슈가 있는 경우가 있다.

터미널에서 ls 커맨드에 al 옵션을 붙여서 ls -al을 입력하면 파일명 이외에도 다른 정보들이 나오는 것을 볼 수 있다.

여기서 맨 앞의 drw~ 와 같이 알파벳과 하이픈을 합쳐 총 10자리가 파일 접근 권한을 표기한 것이다. 실질적으로는 d / rwx / r-x / r-x 와 같이 권한의 역할에 따라 4칸으로 구분된다. 첫 번째 칸은 파일의 타입, 두 번째 칸은 user의 권한, 세 번째 칸은 group의 권한, 네 번째 칸은 나머지(others), 게스트의 권한으로 분류된다. 

 

첫 번째 칸의 형식 

  • - 는 파일을 의미한다.
  • d는 디렉토리를 의미한다.
  • l은 다른 파일 링크를 의미한다.
  • p는 파이프를 의미한다.
  • b는 block device를 의미한다.
  • c는 character device를 의미한다.

2 ~ 4 번째 칸은 모두 같은 형식을 사용한다.

  • r : 읽기(read) - 4
  • w : 쓰기(write) - 2
  • x : 실행(execute) - 1
  • - : 권한 없음 - 0

파일의 접근 권한을 바꾸는 명령어가 chmod( change + mode)이다. 

 

파일 권한을 추가할 때는 $ chmod [권한 분류] + [권한][파일]의 방식으로 추가한다.

#그룹과 ohters에 읽기(r) 권한 추가
$ chmod go+r example.txt

 

파일 권한을 삭제할 때는 $ chmod [권한 분류] - [권한][파일]의 방식으로 삭제한다.

# group에서 w(쓰기), x(실행) 권한 제거
$ chmod g-wx example.txt

 

파일 권한을 변경할 때는 $ chmod [권한 분류:숫자] [파일]의 방식으로 변경한다.

# 숫자 조합을 통한 명령어
# 읽기(r) = 4, 쓰기(w) = 2, 실행(x) = 1
# 4+2+0 = 6 = rw-  user(유저)
# 0+0+0 = 0 = ---  group(그룹)
# 0+0+0 = 0 = ---  others(나머지)
$ chmod 600 example.txt

 

하위 디렉토리의 권한 변경 시 $ chmod -R [권한 분류: 숫자] [파일]의 방식으로 변경한다.

# example 디렉토리 아래에 있는 파일들을 모두 chmod 600 권한으로 변경
$ chmod -R 600 ./example

 

'개발 > Linux' 카테고리의 다른 글

리눅스 특정 디렉토리 내부 파일을 상위로 이동  (0) 2022.06.02