리눅스 명령어 · 4 min read · Sep 14, 2025

리눅스 chmod 명령어 초보자 가이드

리눅스 chmod 명령어는 리눅스 기반 운영 체제에서 파일 및 디렉토리 권한을 변경하는 데 사용됩니다. 이 명령어는 사용자가 권한 설정을 수정하여 누가 파일을 읽고, 쓰고, 실행할 수 있는지를 정의할 수 있게 해줍니다. 권한은 일반적으로 세 가지 범주에 할당됩니다: 파일 소유자, 파일이 속한 그룹, 그리고 기타(모든 다른 사용자). chmod 명령어는 기호 표기법(예: chmod u+x filename으로 사용자에게 실행 권한 추가) 또는 숫자 표기법(예: chmod 755 filename으로 각 범주에 대해 특정 읽기, 쓰기 및 실행 권한 설정)으로 사용할 수 있습니다. 이 명령어는 시스템에서 접근 제어를 관리하는 데 필수적이며, 파일과 디렉토리가 적절한 보안 설정을 갖추도록 보장합니다.

이 튜토리얼에서 언급된 모든 예제와 지침은 Ubuntu 24.04에서 테스트되었으며, 우리가 사용한 chmod 버전은 8.25입니다.

Chmod 기본

다음 ls 명령어 예제를 고려해 보십시오:

출력의 첫 번째 열이 우리가 관심 있는 부분입니다. 파일 유형을 나타내는 초기 ‘-‘는 무시합니다. 열의 나머지 필드는 rw-, rw-, r–로 더 세분화될 수 있습니다. 이는 파일 소유자, 파일이 속한 그룹, 그리고 기타 사용자가 이 파일에 대해 갖는 권한입니다.

이는 소유자가 읽기(r) 및 쓰기(w) 권한을 모두 가지고 있으며, 그룹도 마찬가지임을 의미합니다. 그러나 기타 사용자는 파일에 대한 읽기 권한만 가지고 있습니다. 현재 사용자가 파일을 소유하고 있다고 가정합니다.

이제 모든 사용자에게 이 파일을 실행할 권한을 부여해야 한다고 가정해 보겠습니다. 다음과 같이 할 수 있습니다:

chmod +x script.sh

현재 권한은 다음과 같습니다:

소유자, 그룹 및 기타에 대한 권한에 추가된 ‘x’는 이제 모든 사용자가 이 파일에 대한 실행 접근 권한을 갖는다는 것을 나타냅니다.

그러나 대부분의 경우, 모든 사용자가 파일에 대한 실행 접근 권한을 갖기를 원하지 않을 수 있습니다. 만약 소유자/현재 사용자에게만 script.sh에 대한 실행 접근 권한을 부여해야 한다면, 첫 번째 단계는 모든 사용자로부터 실행 접근 권한을 회수하는 것입니다. 다음 명령어를 사용하여 이를 수행할 수 있습니다:

chmod -x script.sh

그런 다음 소유자에게 명시적으로 권한을 부여합니다:

chmod u+x script.sh

당신이 추측했듯이, ‘u+x’는 소유자/현재 사용자(u)에게 파일에 대한 실행(x) 접근 권한을 부여하라는 의미입니다. 그룹에 대해서는 ‘g’를 사용할 수 있고, 기타에 대해서는 ‘o’를 사용할 수 있습니다.

모든 사용자에게 공통의 권한 세트를 부여하거나 회수하고 싶을 때는 ‘ugo’ 대신 ‘a’를 사용할 수 있습니다. 즉, 다음과 같은 명령어:

chmod ugo-x script.sh

는 다음과 같이 대체할 수 있습니다:

chmod a-x script.sh

또한, ‘u’, ‘g’, ‘o’, ‘a’ 중 어느 것도 명시적으로 지정하지 않으면 기본값은 ‘a’로 간주됩니다.

계속해서, 원한다면 소유자/현재 사용자에게 부여된 권한을 그룹이나 기타 사용자에게 복사할 수도 있습니다. 이를 위해 ‘=’ 기호를 사용합니다.

예를 들어, 소유자/사용자 권한을 그룹에 복사하려면 다음 명령어를 사용합니다:

chmod g=u script.sh

또 다른 시나리오는 특정 파일의 권한을 복사하여 자신의 파일에 적용하는 것입니다. 이를 위해 –reference 명령줄 옵션을 사용합니다. 이 명령줄 옵션을 사용하는 일반 템플릿은 다음과 같습니다:

chmod --reference=[source-file] [destination file]

위 명령에서 source-file은 복사하려는 권한 비트를 가진 파일이며, destination-file은 권한 비트를 변경하려는 파일입니다.

더 나아가, chmod를 사용하여 권한을 변경할 수 있는 숫자 표기법(8진수 표현이라고도 함)이 있습니다. 이 모드에서는 4, 2, 1의 세 숫자를 사용합니다. 4는 읽기에 해당하며, 나머지 두 숫자는 각각 쓰기와 실행에 해당합니다.

예를 들어, 다음 예제를 고려해 보십시오:

이제 소유자/사용자에게 실행 권한을 추가하고, 쓰기 권한을 제거하되 그룹에 실행 권한을 추가하고, 기타 사용자에게는 모든 권한을 제거해야 한다고 가정해 보겠습니다. 이는 다음과 같이 수행할 수 있습니다:

chmod 750 script.sh

위 명령에서 ‘7’은 사용자에 대한 것으로, 이는 4+2+1의 결과로, 사용자가 모든 권한을 가져야 한다는 요구 사항을 반영합니다. 마찬가지로, ‘5’는 그룹에 대한 것으로, 이는 4+0+1의 결과로, 그룹에 읽기 및 실행 권한만 부여해야 한다는 요구 사항을 반영합니다. 마지막으로, ‘0’은 기타 사용자에 대한 것으로, 이는 0+0+0의 결과로, 기타 사용자에게 모든 권한을 회수해야 한다는 요구 사항을 반영합니다.

심볼릭 링크를 다루는 경우 알아두어야 할 사항이 있습니다:

chmod는 심볼릭 링크의 권한을 변경하지 않습니다; chmod 시스템 호출은 그들의 권한을 변경할 수 없습니다. 이는 심볼릭 링크의 권한이 사용되지 않기 때문에 문제가 되지 않습니다. 그러나 명령줄에 나열된 각 심볼릭 링크에 대해 chmod는 가리키는 파일의 권한을 변경합니다. 반면에, chmod는 재귀 디렉토리 탐색 중에 발견된 심볼릭 링크를 무시합니다.

명령줄 참조

리눅스의 chmod 명령어에는 동작을 수정하는 여러 명령줄 옵션이 있습니다. 다음은 가장 일반적으로 사용되는 옵션 목록입니다:

  • -R, –recursive: 이 옵션은 지정된 디렉토리 내의 모든 파일 및 디렉토리에 대해 권한 변경을 재귀적으로 적용합니다. 이는 디렉토리와 그 내용을 한 번에 권한을 변경하고 싶을 때 유용합니다.

예제: chmod -R 755 /path/to/directory

  • -c, –changes: 이 옵션은 변경이 이루어질 때만 보고합니다. 권한이 성공적으로 수정되면 변경 사항을 나타내는 메시지를 출력합니다.

예제: chmod -c 644 filename

  • -v, –verbose: 이 옵션은 처리된 모든 파일에 대한 자세한 정보를 제공합니다. 권한이 변경되었는지 여부에 관계없이 정보를 제공합니다.

예제: chmod -v 755 filename

  • -reference=RFILE: 권한을 직접 지정하는 대신, 이 옵션을 사용하면 파일이나 디렉토리의 권한을 다른 파일이나 디렉토리(RFILE)와 일치하도록 설정할 수 있습니다.

예제: chmod –reference=file1 file2

  • -f, –silent, –quiet: 이 옵션은 대부분의 오류 메시지를 억제하여 오류에 대한 출력을 표시하지 않고 명령을 실행합니다.

예제: chmod -f 755 filename

이러한 옵션을 통해 chmod는 단일 파일 조정에서 대규모 디렉토리 권한 변경에 이르기까지 다양한 시나리오에서 유연하게 사용될 수 있습니다.

결론

이 튜토리얼에서는 이 도구와 관련된 대부분의 기본 사항을 논의하였으며, 우리가 논의한 예제는 이러한 기본 사항을 명확히 하는 데 목적이 있습니다.

파일에 대한 논의에 주로 집중했음을 유의하시기 바랍니다. 디렉토리와 함께 chmod를 사용할 때는 몇 가지 세부 사항을 염두에 두어야 합니다. 모든 정보(및 chmod에 대한 더 많은 세부 사항)는 도구의 매뉴얼 페이지를 참조하십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.