Chmod 계산기: Unix 파일 권한에 대한 심층 이해
Unix 및 Linux 기반 시스템에서 파일 권한은 보안 및 시스템 관리의 핵심적인 측면입니다. chmod 명령(change mode)은 파일이나 디렉토리를 누가 읽고, 쓰고, 실행할 수 있는지 관리하는 도구입니다. 시스템은 논리적이지만, 숫자 및 기호 표현은 초보자뿐만 아니라 숙련된 개발자에게도 혼란스러울 수 있습니다.
이 가이드에서는 Unix 권한의 작동 방식, 8진수 모드와 기호 모드의 차이점을 설명하고 포괄적인 참조 표를 제공합니다.
Unix 권한의 기초
Linux 시스템의 모든 파일과 디렉토리에는 세 가지 사용자 클래스에 대한 세 가지 유형의 권한이 있습니다.
세 가지 클래스
- 사용자 (u): 파일의 소유자.
- 그룹 (g): 파일이 속한 그룹의 구성원.
- 기타 (o): 시스템의 다른 모든 사용자.
세 가지 권한
- 읽기 (r): 파일 내용을 보거나 디렉토리 내용을 나열할 수 있는 권한.
- 쓰기 (w): 파일을 수정하거나 디렉토리에서 파일을 추가/삭제할 수 있는 권한.
- 실행 (x): 파일을 프로그램/스크립트로 실행하거나 디렉토리에 진입할 수 있는 권한.
8진수(숫자) 모드 설명
8진수 모드는 권한을 나타내기 위해 세 개의 숫자를 사용합니다. 각 숫자는 해당 클래스에 대한 권한 값의 합계입니다.
- 읽기 (r) = 4
- 쓰기 (w) = 2
- 실행 (x) = 1
- 권한 없음 = 0
숫자 계산 방법:
읽기 (4) + 쓰기 (2) + 실행 (1) = 7(모든 권한)읽기 (4) + 쓰기 (2) = 6(읽기 및 쓰기)읽기 (4) + 실행 (1) = 5(읽기 및 실행)읽기 (4) = 4(읽기 전용)
예: chmod 755
- 사용자: 7 (4+2+1) -> rwx
- 그룹: 5 (4+1) -> r-x
- 기타: 5 (4+1) -> r-x
기호 모드 설명
기호 모드는 클래스와 권한을 나타내기 위해 문자를 사용합니다.
- 클래스:
u(사용자),g(그룹),o(기타),a(모두) - 연산:
+(추가),-(제거),=(정확히 설정) - 권한:
r,w,x
예: chmod u+x script.sh
이것은 파일 소유자에게 실행 권한을 추가합니다.
Chmod 참조 표
| 8진수 | 기호 | 설명 | 주요 사용 사례 |
|---|---|---|---|
| 777 | a+rwx |
모든 사람이 모든 작업을 수행할 수 있음 | 공용 폴더 (주의해서 사용하세요!) |
| 755 | u=rwx,go=rx |
소유자는 모든 작업을 수행할 수 있고, 다른 사람은 읽기/실행 가능 | 웹 서버 디렉토리, 스크립트 |
| 644 | u=rw,go=r |
소유자는 읽기/쓰기가 가능하고, 다른 사람은 읽기만 가능 | 일반 텍스트 파일, HTML 파일 |
| 600 | u=rw,go= |
소유자만 읽기/쓰기 가능 | 개인 키, SSH 키 |
| 400 | u=r,go= |
소유자만 읽기 가능 | 민감한 설정 파일 |
| 700 | u=rwx,go= |
소유자만 모든 작업을 수행할 수 있음 | 개인용 스크립트 또는 디렉토리 |
일반적인 사용 사례 및 예시
스크립트를 실행 가능하게 만들기
chmod +x my-script.sh
# 또는
chmod 755 my-script.sh
SSH 개인 키 보안 설정
SSH 키는 권한이 너무 개방되어 있으면 작동하지 않습니다. 소유자만 접근할 수 있도록 제한해야 합니다.
chmod 600 ~/.ssh/id_rsa
재귀적으로 권한 변경하기
디렉토리와 그 안의 모든 내용의 권한을 변경하려면:
chmod -R 755 /path/to/directory
특수 권한: SUID, SGID 및 Sticky Bit
고급 Linux 시스템은 특수 권한을 위해 앞에 네 번째 숫자를 사용합니다.
- SUID (4): 파일이 실행될 때 프로세스가 소유자의 권한으로 실행됩니다.
- SGID (2): 프로세스가 그룹의 권한으로 실행되거나, 디렉토리에 생성된 파일이 그룹을 상속받습니다.
- Sticky Bit (1): 디렉토리 내 파일의 소유자만 해당 파일을 삭제하거나 이름을 바꿀 수 있습니다(주로
/tmp에서 사용).
예: chmod 1777 /tmp (모든 사람에게 모든 권한을 허용하지만, 자신의 파일만 삭제 가능).
자주 묻는 질문 (FAQ)
"755"는 정확히 무엇을 의미하나요?
소유자가 읽기, 쓰기 및 실행(4+2+1=7) 권한을 가짐을 의미합니다. 그룹과 기타 사용자는 읽기 및 실행(4+1=5) 권한을 가집니다.
왜 777은 위험하다고 여겨지나요?
777은 시스템의 모든 사용자가 파일을 수정하거나 삭제할 수 있도록 허용합니다. 웹 환경에서 이는 공격자가 악성 스크립트를 업로드하고 실행할 수 있게 할 수 있습니다.
파일의 현재 권한은 어떻게 확인하나요?
터미널에서 ls -l 명령을 사용하세요. -rwxr-xr-x와 같은 문자열이 표시되는데, 첫 번째 문자는 파일 유형이고 나머지 9개의 문자가 권한을 나타냅니다.
결론
파일 권한을 이해하는 것은 안전하고 기능적인 Linux 환경을 유지하는 데 필수적입니다. 644나 755와 같은 숫자 코드가 표준이지만, 온라인 계산기를 사용하면 각 코드가 무엇을 나타내는지 정확하게 시각화할 수 있습니다.
올바른 권한 코드를 빠르게 찾아야 하나요? 당사의 Chmod 계산기(출시 예정)를 사용하여 필요에 맞는 완벽한 명령을 자신 있게 생성해 보세요.