리눅스 chmod 권한 설정 완전 정복: 755와 644의 차이부터 실무 예제까지

개요

리눅스 파일 및 디렉터리 보안의 핵심인 chmod 명령어의 원리와 권한 체계를 쉽게 정리합니다. 숫자 표기법(755, 644)과 문자 표기법(rwx)의 동작 방식을 실제 터미널 실습 화면과 함께 확인하며 완벽하게 이해할 수 있습니다.

1. 리눅스 파일 권한 체계와 현재 권한 확인 (ls -l)

권한 설정 실습을 진행할 전용 디렉터리를 생성하고 해당 위치로 이동하기 위해 mkdir -p ~/chmod_demo && cd ~/chmod_demo 명령어를 실행합니다.

mkdir -p ~/chmod_demo && cd ~/chmod_demo

권한 확인 및 변경 실습에 사용할 빈 텍스트 파일을 생성하기 위해 touch sample.txt 명령어를 실행합니다.

touch sample.txt

ls -l sample.txt 명령어를 실행하여 생성된 파일의 상세 정보와 기본 권한 구조를 확인합니다.
출력된 결과의 맨 앞 10자리(-rw-r--r--)는 파일 유형과 소유자(읽기/쓰기), 소유 그룹(읽기), 기타 사용자(읽기)에 부여된 접근 권한을 나타냅니다.
⚙️ [주요 옵션]

-l : 파일 유형, 권한, 소유자, 그룹, 파일 크기, 수정 시간 등의 상세 정보를 긴 형식(long format)으로 출력합니다.
-a : 숨김 파일(파일명이 .으로 시작하는 파일)을 포함한 모든 파일과 디렉터리를 표시합니다.
-h : 파일 크기를 사람이 읽기 편한 단위(K, M, G 등)로 변환하여 표시합니다 (-l 옵션과 함께 사용).
-d : 디렉터리 내부 내용 대신 디렉터리 자체의 권한 및 상세 정보를 출력합니다.
-R : 하위 디렉터리와 그 안에 포함된 파일 목록까지 재귀적(recursive)으로 출력합니다.

ls -l sample.txt

2. 8진수 숫자 표기법으로 권한 변경하기 (chmod 644, 755)

앞서 생성한 권한 실습용 디렉터리인 ~/chmod_demo로 이동하기 위해 cd ~/chmod_demo 명령어를 실행합니다.

cd ~/chmod_demo

소유자에게는 모든 권한(읽기 4 + 쓰기 2 + 실행 1 = 7), 소유 그룹과 기타 사용자에게는 읽기 및 실행 권한(읽기 4 + 실행 1 = 5)을 부여하기 위해 chmod 755 sample.txt 명령어를 실행합니다.

chmod 755 sample.txt

ls -l sample.txt 명령어를 실행하여 파일 권한이 -rwxr-xr-x로 정상 변경되었는지 확인합니다.
소유자 영역은 rwx, 그룹과 기타 사용자 영역은 각각 r-x로 설정되어 실행 권한(x)이 추가된 것을 확인할 수 있습니다.

ls -l sample.txt

일반 텍스트 파일의 표준 권한인 읽기/쓰기(소유자 6), 읽기 전용(그룹 4, 기타 사용자 4) 상태로 되돌리기 위해 chmod 644 sample.txt 명령어를 실행합니다.

chmod 644 sample.txt

ls -l sample.txt 명령어를 실행하여 변경된 권한 상태를 다시 확인합니다.
파일 권한이 -rw-r--r--로 수정되어 실행 권한이 제거되고 읽기 및 쓰기 권한만 남은 구조를 볼 수 있습니다.

ls -l sample.txt

3. 심볼릭(기호) 표기법으로 특정 권한만 추가·제거하기

실습을 진행하기 위해 작업 디렉터리인 ~/chmod_demo로 이동하고자 cd ~/chmod_demo 명령어를 실행합니다.

cd ~/chmod_demo

실행 권한 부여 실습에 사용할 쉘 스크립트 파일을 생성하기 위해 echo '#!/bin/bash\necho "Hello Linux"' > test.sh 명령어를 실행합니다.

echo ‘#!/bin/bash\necho “Hello Linux”’ > test.sh

생성한 스크립트 파일에 모든 사용자(소유자, 그룹, 기타 사용자)를 대상으로 실행 권한을 추가하기 위해 chmod +x test.sh 명령어를 실행합니다.

chmod +x test.sh

ls -l test.sh 명령어를 실행하여 파일의 권한 변경 상태를 확인합니다.
출력 결과의 권한 영역이 -rwxr-xr-x로 표시되어 모든 대상에 실행 권한(x)이 정상적으로 부여되었음을 확인할 수 있습니다.

ls -l test.sh

쉼표(,)로 구분된 심볼릭 표기를 사용하여 그룹에서 쓰기 권한을 제거하고 기타 사용자에게서 읽기 권한을 제거하기 위해 chmod g-w,o-r test.sh 명령어를 실행합니다.

chmod g-w,o-r test.sh

ls -l test.sh 명령어를 실행하여 변경된 권한을 다시 확인합니다.
출력 결과가 -rwxr-x--x로 변경되어 그룹 영역에는 쓰기 권한이 없고 기타 사용자 영역에서는 읽기 권한(r)이 제거된 것을 볼 수 있습니다.

ls -l test.sh

4. 실무 디렉터리 권한 일괄 변경 (-R 옵션)

하위 디렉터리를 포함한 권한 일괄 변경 실습을 위해 프로젝트 및 로그 디렉터리를 생성하고자 mkdir -p ~/chmod_demo/project/logs 명령어를 실행합니다.

mkdir -p ~/chmod_demo/project/logs

디렉터리 내부에 포함될 테스트용 파이썬 스크립트와 로그 파일을 생성하기 위해 touch ~/chmod_demo/project/app.py ~/chmod_demo/project/logs/app.log 명령어를 실행합니다.

touch ~/chmod_demo/project/app.py ~/chmod_demo/project/logs/app.log

-R 옵션을 사용하여 project 디렉터리와 그 내부의 모든 파일 및 하위 디렉터리 권한을 750으로 일괄 변경하고자 chmod -R 750 ~/chmod_demo/project 명령어를 실행합니다.
소유자에게는 모든 권한(7), 소유 그룹에는 읽기 및 실행 권한(5), 기타 사용자에게는 아무 권한도 주지 않는 설정(0)이 대상 디렉터리와 하위 전체에 재귀적으로 적용됩니다.

chmod -R 750 ~/chmod_demo/project

ls -ld ~/chmod_demo/project 명령어를 실행하여 project 최상위 디렉터리 자체의 권한 설정을 확인합니다.
출력 결과가 drwxr-x---로 표시되어 소유자는 rwx, 그룹은 r-x, 기타 사용자는 --- 권한으로 정상 변경된 것을 확인할 수 있습니다.

ls -ld ~/chmod_demo/project

ls -l ~/chmod_demo/project 명령어를 실행하여 디렉터리 내부 파일과 하위 폴더의 권한 변경 상태를 확인합니다.
내부의 app.py 파일과 logs 디렉터리 모두 -rwxr-x--- 및 drwxr-x---로 권한이 변경되어 -R 옵션을 통한 일괄 적용이 정상 처리되었음을 볼 수 있습니다.

ls -l ~/chmod_demo/project

지금까지 리눅스 chmod 권한 설정 방법과 755, 644의 차이점부터 실무 활용 예제까지 간단하게 정리해보았습니다.
상황에 맞는 올바른 파일 권한 설정을 적용하여 더욱 안전하고 효율적인 리눅스 환경을 관리해보시기 바랍니다.