개요 chmod는 ‘change m o de’의 약자로 파일 및 디렉토리의 권한을 변경하는 명령어다.엄밀히 말하면, 디렉터리도 파일이다. 디렉토리는 디렉토리내의 파일 위치 정보를 포함시킨 포인터를 가지고 있다.Linux로 파일로 할 수 있는 작업은 다음과 같이 3가지이다.
1. Read: 파일에 저장된 데이터 읽기 2. Write: 파일에 데이터 보내기(삭제 포함) 3. Execute: 파일 실행
chmod 명령어로 파일마다 권한을 정하는 이유는 파일이 정해진 용도에 상관없이 사용되는 것을 방지하기 위해서다.예를 들어, 파일 내부의 내용을 수정하면, 시스템에 치명적인 에러가 발생하는 파일이 있다고 해 보자.누군가가 해당 파일에 대해 접근하고 수정을 해 버리면 시스템은 더 이상 사용할 수 없게 된다.이러한 현상을 방지하기 위해서 Linux 에서는, 각 파일 및 디렉토리에 대해 읽기(r), 쓰기(w), 실행(x)의 권한을 개별적으로 지정할 수 있도록 했다.
참고로 디렉토리에 대한 권한은 다음과 같다.
1. Read: 디렉토리 자신의 파일 및 디렉토리 목록을 읽을 것. Read 권한이 없으면 “ls DIR_NAME”을 실행하면 permission denied 오류 발생 2. Write: Execute 권한이 함께 지정되어 있을 때 디렉토리에 파일 추가, 이름 변경, 삭제 가능 3. Execute: 디렉토리에 접근 허용. cd 명령어로 working directory를 이동하기 위해 필요한 권한
그리고 3개의 권한을 다음과 같이 3개의 사용자에 대해서 지정할 수 있도록 했다.
1. user: 파일을 소유한 사용자 2. group: 특정 그룹에 소속된 사용자 3. others: 기타 사용자
파라미터 설명의 예시를 보면서 파일접속권한에 대해 알아보자.ls 명령어를 사용하여 파일 1개와 디렉토리 1건에 대한 정보를 조회했다.참고로 ls-l에서-l은 long의 약어이다.ls 명령어에 대한 자세한 설명보다, 파일 접근 권한에 해당하는 -rw-r–r–, drw-r–r–만 집중적으로 살펴보자.다음 표는 왼쪽부터 순서대로 1, 3, 3, 3의 길이로 자른 항목에 대한 설명이다.분류명의 파일 종류(1) 파일 소유 유저 권한(3) 파일 소유 그룹 권한(3) 그 외 사용자 권한(3) FileFILE-rw-r–r –Directory DIRdrw-r–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–r–r–r–r—- 에러 파일에 대한 접근 권한을 변경한 후 rm 명령어로 파일을 삭제하려고 할 때 만나는 에러 중 하나이다.오류가 발생하는 이유는 현재 사용자에게 게시글 권한이 없어 삭제할 수 없기 때문이다.해결방법은 rm-rf [파일명] 명령어를 입력하여 강제로 해당 파일을 삭제하면 된다.
참고자료 – 리눅스 chmod 명령어 사용법. (Linuxchmodcommand) – 리눅스 파일 권한 변경 [개발자를 위한 레시피]