Linux에서 chmod 명령을 사용하는 방법

게시 됨: 2022-10-25
Linux 노트북의 양식화된 터미널 프롬프트
Fatmawati Achmad Zaenuri/Shutterstock.com
Chmod는 읽기, 쓰기 및 실행을 각각 나타내는 r, w 및 x의 세 가지 주요 인수를 사용합니다. 인수 조합을 추가하거나 제거하면 파일 및 폴더 권한이 제어됩니다. 예를 들어, chmod +rwx는 스크립트를 읽고, 쓰고, 실행할 수 있는 권한을 추가합니다. chmod -wx를 실행하면 쓰기 및 실행 기능이 제거됩니다.

Linux의 chmod 명령을 사용하여 파일에 액세스하고 디렉토리를 검색하고 스크립트를 실행할 수 있는 사람을 제어합니다. 이 명령은 Linux 파일 권한을 수정합니다. 이 권한은 언뜻 보기에는 복잡해 보이지만 작동 방식을 알면 실제로는 매우 간단합니다.

chmod는 파일 권한을 수정합니다.

Linux에서 파일이나 디렉토리에 대해 수행할 수 있는 작업은 권한 집합을 통해 제어됩니다. 세 가지 권한 집합이 있습니다. 하나는 파일 소유자를 위한 집합이고 다른 하나는 파일 그룹의 구성원을 위한 집합이며 다른 모든 사람을 위한 마지막 집합입니다.

초보자를 위한 10가지 기본 Linux 명령
관련 10 초보자를 위한 기본 Linux 명령

권한은 파일 또는 디렉토리에서 수행할 수 있는 작업을 제어합니다. 파일 읽기, 수정 또는 스크립트나 프로그램인 경우 실행을 허용하거나 방지합니다. 디렉토리의 경우 권한은 디렉토리로 cd 할 수 있는 사람과 디렉토리 내에서 파일을 생성하거나 수정할 수 있는 사람을 제어합니다.

chmod 명령을 사용하여 이러한 각 권한을 설정합니다. 파일이나 디렉토리에 어떤 권한이 설정되었는지 확인하려면 ls 를 사용할 수 있습니다.

파일 권한 보기 및 이해

-l (긴 형식) 옵션을 사용하여 ls 가 파일 및 디렉토리에 대한 파일 권한을 나열하도록 할 수 있습니다.

 ls -l 

각 줄에서 첫 번째 문자는 나열되는 항목의 유형을 식별합니다. 대시( - )이면 파일입니다. 문자 d 이면 디렉토리입니다.

다음 9자는 세 가지 권한 집합에 대한 설정을 나타냅니다.

  • 처음 세 문자는 파일을 소유한 사용자에 대한 권한( 사용자 권한 )을 나타냅니다.
  • 가운데 세 문자는 파일 그룹의 구성원에 대한 권한( 그룹 권한 )을 나타냅니다.
  • 마지막 세 문자는 처음 두 범주( 기타 권한 )에 속하지 않는 사람에 대한 권한을 나타냅니다.

각 권한 집합에는 세 개의 문자가 있습니다. 문자는 권한 중 하나의 존재 여부를 나타내는 표시기입니다. 대시( - ) 또는 문자입니다. 문자가 대시인 경우 권한이 부여되지 않았음을 의미합니다. 문자가 r , w 또는 x 인 경우 해당 권한이 부여된 것입니다.

문자는 다음을 나타냅니다.

  • r : 읽기 권한. 파일을 열고 내용을 볼 수 있습니다.
  • w : 쓰기 권한. 파일을 편집, 수정 및 삭제할 수 있습니다.
  • x : 실행 권한. 파일이 스크립트 또는 프로그램이면 실행(실행)할 수 있습니다.

예를 들어:

  • --- 는 권한이 전혀 부여되지 않았음을 의미합니다.
  • rwx 는 모든 권한이 부여되었음을 의미합니다. 읽기, 쓰기 및 실행 표시기가 모두 있습니다.

스크린샷에서 첫 번째 줄은 d 로 시작합니다. 이 줄은 "archive"라는 디렉토리를 나타냅니다. 디렉토리의 소유자는 "dave"이고 디렉토리가 속한 그룹의 이름은 "dave"라고도 합니다.

다음 세 문자는 이 디렉토리에 대한 사용자 권한입니다. 소유자에게 모든 권한이 있음을 보여줍니다. r , wx 문자가 모두 있습니다. 이것은 사용자 dave에게 해당 디렉토리에 대한 읽기, 쓰기 및 실행 권한이 있음을 의미합니다.

세 개의 문자 중 두 번째 세트는 그룹 권한이며 rx 입니다. 이는 dave 그룹의 구성원이 이 디렉토리에 대한 읽기 및 실행 권한을 가지고 있음을 보여줍니다. 즉, 디렉토리에 있는 파일과 내용을 나열할 수 있고 해당 디렉토리로 cd (실행)할 수 있습니다. 쓰기 권한이 없으므로 파일을 생성, 편집 또는 삭제할 수 없습니다.

세 문자의 마지막 세트도 rx 입니다. 이러한 권한은 처음 두 가지 권한 집합의 적용을 받지 않는 사람에게 적용됩니다. 이 사람들("기타"라고 함)은 이 디렉토리에 대한 읽기 및 실행 권한이 있습니다.

요약하자면 그룹 구성원 및 기타 사용자는 읽기 및 실행 권한이 있습니다. 소유자인 dave라는 사용자에게도 쓰기 권한이 있습니다.

다른 모든 파일(mh.sh 스크립트 파일 제외)에 대해 dave와 dave 그룹의 구성원은 파일에 대한 읽기 및 쓰기 속성을 갖고 나머지는 읽기 권한만 가집니다.

mh.sh 스크립트 파일의 특수한 경우 소유자 dave와 그룹 구성원은 읽기, 쓰기 및 실행 권한이 있고 나머지 구성원은 읽기 및 실행 권한만 있습니다.

권한 구문 이해

chmod 를 사용하여 권한을 설정하려면 다음과 같이 알려야 합니다.

  • 대상: 권한을 설정하는 대상입니다.
  • What : 우리는 어떤 변화를 만들고 있습니까? 권한을 추가하거나 제거합니까?
  • which : 어떤 권한을 설정하고 있습니까?

표시기를 사용하여 이러한 값을 나타내고 u+x 와 같은 짧은 "권한 문"을 형성합니다. 여기서 "u"는 "사용자"(누가)를 의미하고 "+"는 추가(무엇을)를 의미하고 "x"는 실행 권한을 의미합니다. (어느).

우리가 사용할 수 있는 "who" 값은 다음과 같습니다.

  • u : 파일의 소유자를 의미하는 사용자.
  • g : 그룹, 파일이 속한 그룹의 구성원을 의미합니다.
  • o : 기타, ug 권한이 적용되지 않는 사람을 의미합니다.
  • : 모두, 위 모든 것을 의미합니다.

이들 중 어느 것도 사용되지 않으면 chmod 는 " a "가 사용된 것처럼 동작합니다.

사용할 수 있는 "무엇" 값은 다음과 같습니다.

  • : 빼기 기호. 권한을 제거합니다.
  • + : 더하기 기호. 권한을 부여합니다. 기존 권한에 권한이 추가됩니다. 이 권한과 이 권한만 설정하려면 아래에 설명된 = 옵션을 사용하십시오.
  • = : 등호. 권한을 설정하고 다른 사용자를 제거합니다.

사용할 수 있는 " which " 값은 다음과 같습니다.

  • r : 읽기 권한.
  • w : 쓰기 권한.
  • x : 실행 권한입니다.

권한 설정 및 수정

모든 사람에게 모든 권한이 있는 파일이 있다고 가정해 보겠습니다.

 ls -l new_ file.txt 

사용자 dave는 읽기 및 쓰기 권한을 갖고 그룹과 다른 사용자는 읽기 권한만 갖기를 원합니다. 다음 명령을 사용하여 수행할 수 있습니다.

 chmod u=rw,og=r new_file.txt 

"=" 연산자를 사용한다는 것은 기존 권한을 모두 지운 다음 지정된 권한을 설정한다는 의미입니다.

이 파일에 대한 새 권한을 확인하겠습니다.

 ls -l new_file.txt 

예상대로 기존 권한이 제거되고 새 권한이 설정되었습니다.

기존 권한 설정을 제거 하지 않고 권한을 추가하는 것은 어떻습니까? 우리도 쉽게 할 수 있습니다.

편집을 마친 스크립트 파일이 있다고 가정해 보겠습니다. 모든 사용자가 실행할 수 있도록 해야 합니다. 현재 권한은 다음과 같습니다.

 ls -l new_script.sh 

다음 명령을 사용하여 모든 사람에 대한 실행 권한을 추가할 수 있습니다.

 chmod a+x new_script.sh 

권한을 살펴보면 실행 권한이 이제 모든 사람에게 부여되고 기존 권한이 그대로 유지되는 것을 볼 수 있습니다.

 ls -l new_script.sh 

"a+x" 문에 "a"가 없어도 동일한 결과를 얻을 수 있었습니다. 다음 명령도 마찬가지로 작동했을 것입니다.

 chmod +x new_script.sh

여러 파일에 대한 권한 설정

한 번에 여러 파일에 권한을 적용할 수 있습니다.

현재 디렉토리에 있는 파일은 다음과 같습니다.

 ls -l 

확장자가 ".page"인 파일에서 "다른" 사용자에 대한 읽기 권한을 제거하려고 한다고 가정해 보겠습니다. 다음 명령으로 이를 수행할 수 있습니다.

 chmod 또는 *.page 

어떤 효과가 있었는지 확인해 보겠습니다.

 ls -l 

보시다시피 "기타" 범주의 사용자에 대해 ".page" 파일에서 읽기 권한이 제거되었습니다. 다른 파일은 영향을 받지 않았습니다.

하위 디렉토리에 파일을 포함하려면 -R (재귀) 옵션을 사용할 수 있습니다.

 chmod -R 또는 *.page

숫자 속기

chmod 를 사용하는 또 다른 방법은 소유자, 그룹 및 기타 사용자에게 부여하려는 권한을 세 자리 숫자로 제공하는 것입니다. 맨 왼쪽 숫자는 소유자의 권한을 나타냅니다. 가운데 숫자는 그룹 구성원의 권한을 나타냅니다. 맨 오른쪽 숫자는 다른 사용자에 대한 권한을 나타냅니다.

사용할 수 있는 숫자와 숫자가 나타내는 내용은 다음과 같습니다.

  • 0: (000) 권한이 없습니다.
  • 1: (001) 실행 권한.
  • 2: (010) 쓰기 권한입니다.
  • 3: (011) 쓰기 및 실행 권한.
  • 4: (100) 읽기 권한입니다.
  • 5: (101) 읽기 및 실행 권한.
  • 6: (110) 읽기 및 쓰기 권한.
  • 7: (111) 읽기, 쓰기 및 실행 권한.

세 가지 권한 각각은 십진수에 해당하는 이진 비트 중 하나로 표시됩니다. 따라서 바이너리로 101인 5는 읽고 실행을 의미합니다. 바이너리로 010인 2는 쓰기 권한을 의미합니다.

이 방법을 사용하여 원하는 권한을 설정합니다. 이러한 권한을 기존 권한에 추가하지 마십시오. 따라서 읽기 및 쓰기 권한이 이미 있는 경우 실행 권한을 추가하려면 7(111)을 사용해야 합니다. 1(001)을 사용하면 읽기 및 쓰기 권한이 제거되고 실행 권한이 추가됩니다.

다른 사용자 범주에 대해 ".page" 파일에 대한 읽기 권한을 다시 추가해 보겠습니다. 사용자 및 그룹 권한도 설정해야 하므로 이미 있는 것으로 설정해야 합니다. 이 사용자는 이미 읽기 및 쓰기 권한(6(110))이 있습니다. "기타"에 읽기 및 권한이 있기를 원하므로 4(100)로 설정해야 합니다.

다음 명령은 이를 수행합니다.

 chmod 664 *.페이지 

이렇게 하면 사용자, 그룹 구성원 및 기타 사용자에게 필요한 권한이 필요한 것으로 설정됩니다. 사용자와 그룹 구성원은 이미 있던 권한으로 재설정되고 다른 사용자는 읽기 권한이 복원됩니다.

 ls -l 

고급 옵션

chmod 에 대한 매뉴얼 페이지를 읽으면 SETUID 및 SETGID 비트와 제한된 삭제 또는 "고정" 비트와 관련된 몇 가지 고급 옵션이 있음을 알 수 있습니다.

99%의 경우에 chmod 가 필요한 경우 여기에 설명된 옵션을 통해 해결할 수 있습니다.

관련: 개발자 및 열광자를 위한 최고의 Linux 노트북