리눅스 chmod 명령어: 파일 권한 설정의 모든 것
리눅스나 유닉스 기반 시스템을 운영하다 보면 가장 자주 마주치는 에러 중 하나가 바로 'Permission denied'입니다. 이는 특정 파일이나 디렉토리에 접근하거나 실행할 권한이 없다는 뜻인데요. 이때 구원투수처럼 등장하는 명령어가 바로 chmod(change mode)입니다.
서버 보안의 첫걸음은 적절한 권한 부여에서 시작됩니다. 너무 느슨한 권한은 해킹의 빌미가 되고, 너무 엄격한 권한은 서비스 장애를 일으키죠. 오늘 이 글에서는 초보자부터 실무자까지 반드시 알아야 할 chmod 사용법과 권한 체계를 완벽하게 해부해 보겠습니다.
1. 리눅스 권한 체계의 이해 (r, w, x)
명령어를 배우기 전, 리눅스가 권한을 어떻게 구분하는지 아는 것이 중요합니다. ls -l 명령어를 입력했을 때 나타나는 -rwxr-xr-x 같은 문자열이 바로 권한의 핵심입니다.
- Read (r / 4): 파일 읽기 및 목록 보기 권한
- Write (w / 2): 파일 수정 및 삭제 권한
- Execute (x / 1): 파일 실행 및 디렉토리 접근 권한
이 권한들은 소유자(User), 그룹(Group), 기타 사용자(Others) 세 그룹으로 나누어 적용됩니다.
2. 숫자(8진수) 모드로 권한 변경하기
가장 빠르고 직관적인 방법은 숫자를 사용하는 것입니다. 각 권한의 점수(4, 2, 1)를 더해 세 자리 숫자로 표현합니다. 예를 들어 7은 읽기(4)+쓰기(2)+실행(1)의 합입니다.
가장 많이 쓰이는 조합은 다음과 같습니다:
- 755: 소유자는 모든 권한, 나머지는 읽기와 실행만 가능 (웹 콘텐츠 기본)
- 644: 소유자는 읽기/쓰기, 나머지는 읽기만 가능 (일반 설정 파일)
- 700: 오직 소유자만 모든 작업 가능 (개인적인 데이터)
3. 심볼릭(Symbolic) 모드로 세밀하게 조절하기
숫자 모드가 전체 권한을 새로 쓴다면, 심볼릭 모드는 특정 권한만 콕 집어 추가하거나 뺄 때 유용합니다. 대상(u, g, o, a)과 연산자(+, -, =), 권한(r, w, x)을 조합합니다.
예시: chmod g+w file.txt (그룹 사용자에게 쓰기 권한 추가)
4. 실무에서 유용한 chmod 주요 옵션
명령어의 효율을 극대화하는 옵션 중 가장 중요한 것은 단연 -R (Recursive)입니다. 하위 디렉토리와 그 안의 모든 파일 권한을 한 번에 변경해야 할 때 필수적입니다.
$ chmod -R 755 /var/www/html
위 명령어는 웹 루트 디렉토리 내의 모든 파일 권한을 한 번에 정리해 줍니다.
chmod 명령어 요약 및 체크리스트
| 구분 | 권한 값 | 설명 | 권장 용도 |
|---|---|---|---|
| 777 | rwxrwxrwx | 모두에게 모든 권한 허용 | 보안상 위험 (테스트용) |
| 755 | rwxr-xr-x | 소유자(Full), 타인(Read/Exec) | 공개용 디렉토리, 스크립트 |
| 644 | rw-r--r-- | 소유자(RW), 타인(Read) | 일반 텍스트 파일, 설정 파일 |
| 600 | rw------- | 소유자만 읽기/쓰기 가능 | SSH 키, 비밀번호 파일 |
결론: 안전한 리눅스 환경을 위한 조언
명령어 chmod는 단순하지만 시스템 보안의 핵심을 관통합니다. 777 권한 부여를 남발하는 습관은 지양해야 하며, 항상 최소 권한의 원칙(Principle of Least Privilege)을 지키는 것이 좋습니다. 파일은 644, 디렉토리는 755를 기본으로 시작하여 필요에 따라 조절해 보세요.
💡 지금 바로 실습해 보세요!
터미널을 열고 ls -l로 현재 파일 권한을 확인한 뒤, chmod 600으로 민감한 파일의 보안을 높여보시는 건 어떨까요?