'chmod' 명령어를 활용한 Linux 파일 권한 숙달하기

강력한 보안 관리를 위해 필수적인 Linux의 `chmod` 명령어를 마스터하세요. 이 실용적인 가이드는 파일 및 디렉토리에 정확한 읽기, 쓰기, 실행 권한을 설정하는 기호 표기법(`u+x`)과 8진수(숫자) 표기법 모두를 자세히 다룹니다. 표준 권한(644, 755), 재귀적 적용 방법, 그리고 효과적인 Linux 시스템 관리를 위한 특수 액세스 비트 사용법을 익히세요.

39 조회수

'chmod' 명령어를 이용한 Linux 파일 권한 마스터하기

Linux 파일 권한은 시스템 보안 및 사용자 접근 제어의 기본 토대입니다. chmod (change mode) 명령어를 이해하고 숙달하는 것은 모든 Linux 시스템 관리자, 개발자 또는 숙련된 사용자에게 필수적입니다. 이 명령어는 누가 (사용자, 그룹, 기타 사용자) 파일을 읽고, 쓰고, 실행할 수 있는지 정확하게 정의하여 시스템의 안정성과 보안 상태에 직접적인 영향을 미칩니다.

이 가이드는 chmod를 사용하는 두 가지 주요 방법—기호 표기법과 8진수 (숫자) 표기법—을 실용적인 예제와 함께 안내하여 파일 접근 권한을 자신 있게 관리할 수 있도록 도와줄 것입니다.


Linux 권한 기본 사항 이해

chmod를 자세히 살펴보기 전에 Linux 권한의 구조를 이해하는 것이 중요합니다. ls -l을 실행하면 출력의 첫 10개 문자가 파일 유형과 권한을 상세히 보여줍니다.

예를 들어, -rwxr-xr--에서:

  1. 첫 번째 문자: 파일 유형 (파일은 -, 디렉터리는 d, 심볼릭 링크는 l 등).
  2. 다음 아홉 문자: 권한은 세 개의 그룹으로 나뉘어 있습니다:
    • 사용자 (u): 파일 소유자를 위한 권한.
    • 그룹 (g): 파일을 소유한 그룹의 구성원을 위한 권한.
    • 기타 사용자 (o): 그 외 모든 사람을 위한 권한.

각 그룹에는 세 가지 권한 유형이 포함됩니다:

  • r (읽기): 파일 내용을 보거나 디렉터리 내용을 나열할 수 있도록 허용합니다.
  • w (쓰기): 파일을 수정하거나 삭제하거나, 디렉터리 내에서 파일을 생성/삭제할 수 있도록 허용합니다.
  • x (실행): 파일을 프로그램으로 실행하거나 디렉터리에 진입(탐색)할 수 있도록 허용합니다.

방법 1: 기호 표기법 (문자 사용)

기호 표기법은 다른 권한에 영향을 주지 않으면서 특정 권한을 수정하는 가장 직관적인 방법인 경우가 많습니다. 이는 문자를 사용하여 개체, 작업 및 권한을 나타냅니다.

기호 구문

구문은 일반적으로 다음과 같습니다: chmod [who][operator][permissions] file(s)

구성 요소 의미
Who (대상) 대상 개체 u (사용자), g (그룹), o (기타 사용자), a (모두)
Operator (연산자) 수행할 작업 + (추가), - (제거), = (정확히 설정)
Permissions (권한) 권한 유형 r, w, x

실용적인 기호 예제

1. 소유자에게 실행 권한 부여:

스크립트 (myscript.sh)가 있고 소유자만 실행해야 하는 경우:

chmod u+x myscript.sh

2. 그룹 구성원에게 쓰기 허용:

파일 그룹의 사용자가 파일을 편집할 수 있도록 허용하려면:

chmod g+w shared_document.txt

3. 소유자를 제외한 모두에 대한 쓰기 권한 제거:

이것은 일반적인 보안 관행입니다. a-w를 사용하여 모두에 대한 쓰기 접근을 제거한 다음, 사용자 (u+w)에게만 명시적으로 다시 권한을 부여합니다.

chmod a-w,u+w sensitive_data.log

4. 기타 사용자에게 정확한 권한 설정:

등호 (=)를 사용하여 '기타 사용자(Others)'의 기존 권한을 모두 무시하고 읽기 권한만 설정합니다:

chmod o=r project_plan.doc

방법 2: 8진수 (숫자) 표기법

8진수 표기법은 전체 권한 세트를 한 번에 설정하는 데 더 빠르고 정확합니다. 이는 각 개체(사용자, 그룹, 기타 사용자)에 대한 읽기, 쓰기 및 실행 권한 조합에 숫자 값을 할당하는 방식에 의존합니다.

8진수 값 계산

각 권한은 이진수에 해당하며, 이는 10진수로 변환됩니다:

  • r (읽기) = 4
  • w (쓰기) = 2
  • x (실행) = 1
  • 권한 없음 = 0

권한은 각 개체 그룹(사용자, 그룹, 기타 사용자)별로 합산됩니다:

조합 합계 숫자 값
rwx 4 + 2 + 1 7
rw- 4 + 2 + 0 6
r-x 4 + 0 + 1 5
r-- 4 + 0 + 0 4
-wx 0 + 2 + 1 3
-w- 0 + 2 + 0 2
--x 0 + 0 + 1 1
--- 0 + 0 + 0 0

8진수 표기법을 사용하여 권한을 지정하려면 세 자리 숫자를 제공합니다: [사용자][그룹][기타 사용자].

실용적인 8진수 예제

1. 표준 파일 권한 (644):

이는 사용자에게는 읽기/쓰기, 그룹에게는 읽기 전용, 기타 사용자에게는 읽기 전용으로 권한을 설정합니다.

  • 사용자 (rw-): 4 + 2 = 6
  • 그룹 (r--): 4
  • 기타 사용자 (r--): 4
chmod 644 important_file.txt

2. 표준 디렉터리 권한 (755):

이것은 디렉터리에 대한 일반적인 설정으로, 소유자는 내용을 관리할 수 있고 다른 사용자는 디렉터리를 나열/진입할 수 있도록 허용합니다.

  • 사용자 (rwx): 4 + 2 + 1 = 7
  • 그룹 (r-x): 4 + 1 = 5
  • 기타 사용자 (r-x): 4 + 1 = 5
chmod 755 my_project_folder

3. 보안 파일 권한 (600):

소유자만 읽고 쓸 수 있으며, 다른 누구도 접근할 수 없습니다.

  • 사용자 (rw-): 6
  • 그룹 (---): 0
  • 기타 사용자 (---): 0
chmod 600 private_key.pem

4. 모두에게 전체 접근 권한 (777) - 주의하여 사용하십시오!

이는 모든 사람에게 읽기, 쓰기 및 실행에 대한 전체 권한을 부여합니다. 이는 보안에 매우 취약하므로 임시 테스트 환경이 아닌 경우 일반적으로 피해야 합니다.

chmod 777 public_upload_area

⚠️ 보안 경고: 권한을 777(모두에게 읽기/쓰기/실행)로 설정하는 경우는 거의 필요하지 않으며 보안을 심각하게 손상시킵니다. 파일에는 644, 디렉터리에는 755와 같은 제한적인 설정을 선호하십시오.


특수 권한: 네 번째 숫자

8진수 표기법을 사용할 때, 선택적으로 세 자리 숫자 앞에 네 번째 숫자를 접두사로 붙여 파일 및 디렉터리에 특수 권한을 설정할 수 있습니다. 이는 접근 제어 상속 및 실행 동작과 관련이 있습니다.

이름 파일에 미치는 영향 디렉터리에 미치는 영향
4 SetUID (SUID) 파일이 소유자의 권한으로 실행됩니다. 무시됨
2 SetGID (SGID) 파일이 그룹의 권한으로 실행됩니다. 새 파일은 디렉터리의 그룹 ID를 상속합니다.
1 Sticky Bit (스티키 비트) 효과가 거의 없습니다. 사용자는 해당 디렉터리 내에서 자신이 소유한 파일만 삭제할 수 있습니다.

특수 권한 예제

shared_group_files라는 디렉터리에 SGID 비트를 설정하려면 (표준 권한 770 가정):

  • 770 (사용자/그룹/기타 사용자) + 2 (SGID) = 2770
chmod 2770 shared_group_files

실행 시 사용자에게 상승된 권한을 부여하는 실행 가능한 스크립트에 SUID 비트를 설정하려면 (종종 시스템 유틸리티에 사용됨):

  • 4755 (SUID + rwxr-xr-x)
chmod 4755 system_utility

권한 재귀적으로 적용하기

전체 디렉터리 트리를 관리할 때는 재귀 플래그 (-R)를 사용해야 합니다. 이는 지정된 변경 사항을 디렉터리 자체 그 내용물(파일 및 하위 디렉터리) 모두에 적용합니다.

예시: web_root 내부의 모든 파일과 폴더를 재귀적으로 755로 설정:

chmod -R 755 web_root/

모범 사례: 재귀적 변경을 적용할 때, 파일에 대한 실행 권한과 디렉터리에 대한 탐색 권한 사이에 엄격한 분리가 필요한 경우 디렉터리는 755로, 파일은 644로 별도로 설정하는 것이 현명한 경우가 많습니다.

결론

chmod 명령어는 안전하고 기능적인 Linux 환경을 유지하기 위한 기본적인 도구입니다. 기호 표기법의 명시적이고 추가적인 특성(u+x)을 선호하든, 8진수 표기법의 간결한 힘(755)을 선호하든, 둘 다 숙달하면 파일 접근을 안정적으로 관리할 수 있습니다. 변경 후에는 ls -l을 사용하여 권한이 올바르게 설정되었는지 항상 검토하십시오.