개요 chmod는 “changemode”의 약자로 파일 및 디렉토리의 권한을 변경하는 명령어이다.엄밀하게는 디렉토리도 파일이다. 디렉토리는 디렉토리 내부의 파일 위치 정보를 담은 포인터를 가지고 있다.Linux에서 파일로 할 수 있는 작업은 다음과 같은 3가지이다.
1. Read : 파일에 저장된 데이터 읽기 2. Write : 파일에 데이터 쓰기 (삭제 포함) 3. Execute : 파일 실행
chmod 명령어로 파일마다 권한을 정하는 이유는 파일이 정해진 쓰임새와 상관없이 사용되는 것을 방지하기 위해서다.예를 들어, 파일의 내부 내용을 수정하면 시스템에 치명적인 오류가 발생하는 파일이 있다고 칩시다.누군가가 그 파일에 액세스하고 수정해 버리면 시스템은 더 이상 사용할 수 없게 된다.이러한 현상을 방지하기 위하여 Linux에서는 각 파일 및 디렉토리에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 개별적으로 지정할 수 있도록 하였다.
참고로 디렉토리에 대한 권한은 다음과 같다.
1. Read : 디렉토리 내의 파일 및 디렉토리 목록 읽기. Read 권한이 없는 경우 “lsDIR_NAME”를 실행하면 permissiondenied 오류가 발생합니다.Write: Execute 권한이 함께 지정되어 있을 때 디렉토리에 파일 추가, 이름 변경, 삭제 가능 3.Execute: 디렉토리에 대한 액세스 허용. cd 명령어로 working directory를 이동하기 위해 필요한 권한
그리고 3개의 권한을 다음과 같이 3개의 사용자에 대해 지정할 수 있도록 하였다.
1.user: 파일을 소유한 사용자 2.group: 특정 그룹에 소속된 사용자 3.others: 기타 사용자
2. 파라미터 설명 예를 보면서 파일 액세스 권한에 대해 알아보자.ls 명령을 사용하여 파일 1개와 디렉토리 1개에 대한 정보를 조회했다.참고로 ls-l에서 -l은 long의 약자이다.ls 명령에 대한 자세한 설명보다는 파일 액세스 권한에 해당하는 -rw-r-r-r-, drw-r-r-만을 집중적으로 조사하고자 한다.다음 표는 왼쪽부터 순서대로 1, 3, 3 길이로 자른 항목에 대한 설명이다.분류 이름 파일의 종류 (1) 파일 소유 사용자 권한 (3) 파일 소유 그룹 권한 (3) 기타 사용자 권한 (3) FileFILE-rw-r–Directory DIRdrw-r– 위의 표를 풀어 설명하면 다음과 같다.
1. FILE라는 이름을 가진 파일은 파일 소유 사용자는 (읽기, 쓰기) 권한, 파일 소유 그룹은 (읽기) 권한, 기타 사용자는 (읽기) 권한이 있다.2. DIR이라는 이름을 가진 디렉토리는 파일 소유 사용자는 (읽기, 쓰기) 권한, 파일 소유 그룹은 (읽기) 권한, 기타 사용자는 (읽기) 권한이 있다.
3. 사용법 2번에서 예시한 FILE라는 이름을 가진 파일에 대해 액세스 권한을 다음과 같이 변경하려고 한다.
– 파일 소유자 권한: 모든 권한 허용 – 파일 소유 그룹 권한: 읽기, 쓰기만 허용 – 기타 사용자 권한: 모든 권한 허용하지 않음
최종적으로 완성해야 할 접근 권한의 형태는 -rwxrw—이어야 한다.상기와 같이 각 사용자별로 나누어 접권 권한을 부여하면 동일한 명령어를 수차례 입력해야 하는 불편함이 있다.따라서 쉼표를 사용하면 한 번에 여러 사용자에 대한 액세스 권한을 지정할 수 있다.이때 쉼표를 사용할 때는 띄어쓰기 없이 붙여 입력해야 한다.4.8진수 형식 3번에서는 파일 소유자(user), 파일 소유 그룹(group), 기타 사용자(other)를 하나씩 지정하여 접근 권한을 지정하였다.그러나, 8진수(0~7까지의 수) 형식으로 간단하게 액세스 권한을 설정하는 방법이 있다.액세스 권한은 8진수로 다음과 같이 표현한다.
– 읽기: 4 – 쓰기: 2 – 실행:1 – 권한 없음: 0
사용방법은 상기 수를 적절히 첨가하여 사용하면 된다.앞의 예와 같이 -rwxrw——————-를 만들고자 한다면 다음과 같이 입력할 수 있다.8진수 형식을 활용한 예는 다음과 같다.5.overrider-r-r-에러 파일에 대한 액세스 권한을 변경한 후 rm 명령어로 파일을 삭제하려고 할 때 발생하는 오류 중 하나이다.오류가 발생하는 이유는 현재 사용자에게 쓰기(w) 권한이 없기 때문에 삭제할 수 없다는 것이다.해결방법은 rm-rf[파일명] 명령을 입력하고 강제로 해당 파일을 삭제하면 된다.
참고 자료 – Linux chmod 명령어 사용법. (Linuxchmodcommand) – Linux 파일 권한 변경 [개발자를 위한 레시피]