300x250

서버의 데이터 중 일부를 로컬에 옮겨서 시각화해보려 했는데, 권한 문제로 filezilla에서 'permission denied'에러가 발생했다.

이를 해결하기 위해 'chmod'라는 파일의 모드를 변경해주는 명령어를 통해 권한을 변경하는 방법을 기록해두려 한다.

참고로 서버는 리눅스 운영체제이고, 로컬은 맥이다.

 

 

 

 

 

Chmod 명령어

 

리눅스에서 파일(또는 폴더)의 모드는 세 가지로 나뉜다.

  • r : 읽기 모드 (read)
    • 폴더(디렉토리)인 경우 : 디렉토리 내의 파일 혹은 디렉토리 리스트 읽기
  • w : 쓰기 모드 (write)
    • 폴더(디렉토리)인 경우 : 디렉토리에 파일 추가, 이름 변경, 삭제 
  • x : 실행 모드 (execute)
    • 폴더(디렉토리)인 경우 : 디렉토리에 접근, cd 명령어로 directory 이동

 

하지만 리눅스 시스템의 모든 파일이 읽기, 쓰기, 실행 가능하도록 해버리면, 명령어를 잘못 사용하여 시스템에 치명적인 실수를 할  수도 있다.

따라서 리눅스에서는 각 파일이나 폴더의 권한(즉, 읽기 가능, 쓰기 가능, 실행 가능)을 개별적으로 줄 수 있도록 해놓았다.

각각의 권한은 파일 소유자(user), 특정 그룹 소속 사용자(group), 그 외 사용자(others)에 대해 다르게 부여할 수 있다.

 

Chmod 명령어는 이 권한을 변경해줄 수 있는 명령어이다. (change mode)

 

먼저, 현재 디렉토리(파일)의 현재 권한을 확인할 수 있는 방법은 다음과 같다.

ls -l

 

실행 시 다음과 같이 뜬다. (보통 디렉토리 내용을 확인할 때 'ls -al'로 많이 확인하곤 한다. 여기서는 -l 옵션만 확인해보자. 참고로 -a는 숨김 파일이나 폴더까지 표현하는 옵션이다.)

 

ls -l example

 

위치에 따른 의미는 다음과 같다.

  1. 처음 10자리 : 권한을 나타낸다.
    • 첫 번째 자리는 파일 타입이고, 세 자리씩 각각 소유자, 그룹, 그 외 사용자 권한이다.
    • 위 예시의 경우, 사용자와 그룹에 속한 사람들은 읽기, 쓰기, 실행이 모두 가능하고, 그 외 사용자는 쓰기는 불가능하다.
  2. 파일 소유자의 이름을 나타낸다.
  3. 파일 소유 그룹을 타나낸다.

 

 

 

 

사용법

 

명령어는 다음과 같은 형식으로 사용한다.

chmod [option] [8진수 mode] [대상 파일명 혹은 폴더명]

 

  • option
    • -R : 하위 파일 및 디렉토리까지 적용한다. (가장 많이 사용하는 옵션이다.)
    • -v, -f, -c 등 다른 옵션도 있으나 잘 사용하지 않는다.
  • mode : 파일에 적용할 모드를 8진수 조합으로 나타낸다.
    • 8진수의 의미
      • 0 : ---
      • 1 : --x
      • 2 : -w-
      • 3 : -wx
      • 4 : r--
      • 5 : r-x
      • 6 : rw-
      • 7 : rwx
      • 즉, 읽기, 쓰기, 실행 권한을 모두 부여하기 위해서는 7을 부여해야 한다.
    • 8진수를 소유자, 그룹, 그 외 사용자 각각에 대해 부여한다.

 

예를 들어, 'test'라는 디렉토리의 모든 하위 파일 및 디렉토리에 대해서 모두가 읽고, 쓰고, 실행 가능하도록 하려면 다음과 같이 명령을 입력해준다.

 

chmod -R 777 test

 

만약 chmod 명령을 하는 데 permission error가 뜬다면, sudo 권한으로 진행하면 된다.

 

sudo chmod -R 777 test
728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기