이번 포스팅에서는 Linux에서 파일 또는 디렉토리의 권한을 변경하는데 사용하는 명령어인 chmod에 대해 알아보고자 한다. 기타 다른 기본 명령어에 대해서는 이전 포스팅을 참고하면 좋을듯 하다.
2023.04.09 - [Linux] - Linux - 기본 명령어 정리
Linux CLI 환경에서 ls -l 명령어를 사용하면 모든 파일과 디렉토리를 긴 형식으로 나열해서 볼 수 있는데, 다음과 같은 형식으로 파일 및 디렉토리의 권한이 보이는 것을 확인할 수 있다.
Linux에서는 파일의 권한(permission)을 10자리로 표현하는데 1번째 자리는 디렉토리(d) 또는 파일(-)을, 2~4번째 자리는 소유자(Owner) 권한을, 5~7번째 자리는 그룹(Group) 권한을, 8~10번째 자리는 기타 사용자(Other) 권한을 의미한다. 그리고 각 자리는 r(읽기), w(쓰기), x(실행), -(권한없음)으로 표시한다. 다음의 예시를 살펴보도록 하자.
- 파일 구분(-) : 파일을 의미
- 소유자 권한(rwx) : 읽기, 쓰기, 실행 가능
- 그룹 권한(rwx) : 읽기, 쓰기, 실행 가능
- 기타 사용자 권한(r-w) : 읽기, 실행만 가능
chmod 명령어는 이렇게 파일 및 디렉토리에 부여되어 있는 권한을 변경할 수 있게 해주는 명령어이다. 예를 들어 사용자(u)에게 test.txt 파일의 읽기(r), 쓰기(w), 실행(x) 권한을 부여하고 싶을 때 다음과 같이 명령어를 사용할 수 있다. 여기서 사용자(u)는 파일의 소유자(Owner)를 의미한다.
chmod u=rwx test.txt
더 나아가 chmod 명령어를 사용할 경우 위의 권한 표현 방식을 8진수로 변경하여 사용할 수도 있다. 변경 방법은 파일 구분을 제외한 각 권한을 권한있음(1)과 권한없음(0)으로 바꾼 뒤 8진수로 변환하여 chmod 명령어의 매개변수로 사용하면 된다.
1. 위의 rwx rwx r-x 에서 "-"는 0, 나머지는 1로 바꾸어 준다.
rwx rwx r-x → 111 111 101
2. 이제 3자리의 2진수를 8진수로 변환한다.
111 = 7 , 101 = 5
111 111 101 → 7 7 5
3. 마지막으로 chmod 명령문을 다음과 같이 완성해준다.
chmod 775 [filename]
읽기(r), 쓰기(w), 실행(x) 권한은 각각 4, 2, 1의 값을 가진다. 소유자에게 읽기, 쓰기, 실행 권한을 부여하고 싶다면 권한코드는 rwx 가 되고 그 값은 4+2+1 이 된다. 그룹에게 읽기, 실행 권한을 부여하고 싶다면 권한코드는 r-x 가 되며 그 값은 4+1 이 되고, 기타 사용자에게는 실행 권한만을 부여하고 싶다면 권한코드는 --x 가 되며 그 값은 1 이 된다. 이제 명령어를 다음과 같이 사용할 수 있다.
chmod 751 test.txt
test.txt 파일의 권한을 부여함에 있어 소유자에게는 7(4+2+1)의 권한을, 그룹에게는 5(4+1)의 권한을, 기타 사용자에게는 1의 권한을 부여한다는 의미를 갖게 된다.
< 권한 코드 >
읽기(r) 권한 : 4
쓰기(w) 권한 : 2
실행(x) 권한 : 1
읽기(r), 쓰기(w), 실행(x) 권한 부여 : 111 → 4+2+1 → 7
읽기(r), 실행(x) 권한 부여 : 101 → 4+0+1 → 5
실행(x) 권한 부여 : 001 → 0+0+1 → 1
'Linux' 카테고리의 다른 글
Linux - 기본 명령어 정리 (0) | 2023.04.09 |
---|