웹사이트 검색

초보자를 위한 Linux chmod 명령 자습서


이 페이지에서

  1. Chmod 기본 사항\n
  2. 결론

예를 들어 Linux 시스템에서 bash 스크립트를 생성하는 경우가 있습니다. 하지만 실행하려고 하면 권한 오류가 발생합니다. 너 뭐하니? 우분투에 있다고 가정하고 파일 아이콘을 마우스 오른쪽 버튼으로 클릭하고 권한 탭으로 이동하여 프로그램으로 파일 실행 허용 옵션을 활성화하십시오. 그러나 요구 사항이 명령줄에서 이 변경을 수행하는 것이라면 어떻게 될까요?

Linux를 처음 접하고 명령줄을 통해 파일/디렉토리 권한을 변경하는 방법을 찾고 있다면 chmod라는 명령이 있다는 사실에 기뻐할 것입니다. 이 자습서에서는 이 명령의 기본 사항에 대해 설명하고 다양한 시나리오에서 사용할 수 있는 방법을 설명하는 예제를 제공합니다.

이 튜토리얼에서 언급된 모든 예제와 지침은 Ubuntu 16.04LTS에서 테스트되었으며 우리가 사용한 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 never changes the permissions of symbolic links; the chmod system call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic links are never used.  However, for each symbolic link listed on the command line, chmod changes the permissions of
the pointed-to file.  In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

결론

chmod 명령은 매일 필요할 수 있는 명령이 아닐 수도 있지만 알고 있어야 하는 매우 유용하고 중요한 도구입니다. 이 자습서에서는 이 도구와 관련된 대부분의 기본 사항에 대해 논의했으며 논의한 예제는 이러한 기본 사항을 명확하게 하는 데 목적이 있습니다.

우리의 논의는 주로 파일에 초점을 맞추었다는 점에 유의하십시오. 디렉토리와 함께 chmod를 사용하는 동안 염두에 두어야 할 몇 가지 세부 사항이 있습니다. 모든 정보(chmod에 대한 자세한 내용 포함)를 보려면 도구 매뉴얼 페이지로 이동하십시오.