사용기

chmod 기초 완전정복, 설명서

드리프트 2020. 12. 2. 20:02
728x170

 

 

Linux의 chmod 명령을 사용하여 파일에 액세스하고 디렉토리를 검색하고 스크립트를 실행할 수 있습니다. 

 

이 명령은 Linux 파일 권한을 수정하는데, 언뜻 보기에는 복잡해 보이지만 작동 방식을 알게 되면 실제로는 매우 간단합니다.

 

 

파일 권한보기 및 이해

 

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

 

ls -l

 

 

위 그림의 각 행에서 첫 번째 문자는 항목 유형을 표시합니다.

 

대시 (-)이면 파일이고, 문자 d 인 경우 디렉토리입니다.

 

위 그림의 각 행에서 두 번째 문자부터 9 개 문자는 세 가지 권한 집합에 대한 설정을 나타냅니다.

 

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

 

각 권한 집합에는 3 개의 문자가 있습니다.

 

 문자는 권한 중 하나가 있는지 여부를 나타내는 표시기입니다. 

 

대시 (-) 또는 문자입니다. 

 

문자가 대시이면 권한이 부여되지 않았음을 의미합니다.

 

문자가 r, w 또는 x이면 해당 권한이 부여된 것입니다.

 

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

 

예를 들어,

 

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

 

위 그림에서 첫 번째 줄은 d로 시작합니다.

 

이 줄은 "아카이브"라는 디렉토리를 나타냅니다.

 

디렉토리 소유자는 "dave"이고 디렉토리가 속한 그룹의 이름 또한 "dave"입니다.

 

다음 세 문자는 이 디렉토리에 대한 사용자 권한입니다. 

 

이는 소유자에게 전체 권한이 있음을 나타냅니다. r, w 및 x 문자가 모두 있습니다. 이는 사용자 dave가 해당 디렉토리에 대한 읽기, 쓰기 및 실행 권한을 가지고 있음을 의미합니다.

 

세 문자의 두 번째 세트는 그룹 권한이며 이는 r-x입니다. 

 

이는 dave 그룹의 구성원이 이 디렉토리에 대한 읽기 및 실행 권한을 가지고 있음을 보여줍니다. 

 

즉, 디렉토리에있는 파일과 내용을 나열하고 해당 디렉토리로 cd (실행) 할 수 있습니다. 

 

쓰기 권한이 없으므로 파일을 작성, 편집 또는 삭제할 수 없습니다. 

 

마지막 세 문자 세트도 r-x입니다.

 

이러한 권한은 처음 두 권한 집합이 적용되지 않는 사람에게 적용됩니다.

 

이러한 사용자 ( "기타"라고 함)는 이 디렉토리에 대한 읽기 및 실행 권한이 있습니다.

 

요약하자면 그룹 구성원 및 다른 사용자는 읽기 및 실행 권한을 가지고 있습니다. 

 

소유자 인 dave라는 사용자도 쓰기 권한이 있습니다. 

 

다른 모든 파일 (mh.sh 스크립트 파일 제외)의 경우 dave와 dave 그룹의 구성원은 파일에 대한 읽기 및 쓰기 특성을 가지며 다른 파일은 읽기 권한만 갖습니다. 

 

mh.sh 스크립트 파일의 경우 소유자 dave와 그룹 구성원은 읽기, 쓰기 및 실행 권한을 가지며 다른 구성원은 읽기 및 실행 권한만 갖습니다.

 

 

 

 

 

 

권한 규칙 이해하기

 

chmod를 사용하여 권한을 설정하려면 
 
 - Who : 누구에게 권한을 설정하고 있는지 알려야 합니다. 
 - What : 권한을 추가하거나 제거합니까? 
 - Which : 어떤 권한을 설정하고 있습니까?
 
 사용할 수 있는 "Who"값은 다음과 같습니다. 


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

이들 중 어느 것도 사용되지 않으면 chmod는 "a"가 사용된 것처럼 작동합니다.
 
 사용할 수 있는 "What"값은 다음과 같습니다.
 
  – :  권한을 제거합니다. 
  + :  권한을 부여합니다. 권한이 기존 권한에 추가됩니다.
  = :  권한을 설정하고 다른 사람을 제거하십시오.
 
 사용할 수 있는 "Which"값은 다음과 같습니다.
 
 r : 읽기 권한
 w : 쓰기 권한

 x : 실행 권한

 

 

실제 chmod 사용하기

 

모든 사람이 전체 권한을 가진 파일이 있다고 가정해 보겠습니다.

 

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

 

 

 

숫자로 권한 설정하기

 

아래 그림을 보면 쉽게 이해할 수 있습니다.

 

chmod a+x *.sh

모든 사용자에게 실행 권한을 주는 명령어입니다.

 

이 명령어를 숫자로 바꾸면 다음과 같습니다.

 

chmod 111 *.sh

 

여기서 "1"을 세 번 썼는데 각각 Owner, Group, Others에 --x를 주기 위해서입니다.

 

이것으로 chmod 기초에 대해 살펴보았습니다.

그리드형