Zero To One

Chmod 본문

Linux

Chmod

Zero_To_One 2022. 2. 14. 10:22

파일 권한 보기

파일 디렉토리의 모든 파일에 대한 모든 권한을 보려면 ls와 함께 명령을 사용해야한다.

예를 들어 다음을 입력하면,

ls -lah

다음과 비슷한 결과물을 볼 수 있을 것이다.

-rw-r--r-- 1 user1 group1 62 Jan 15 16:10 myfile.txt
drwxr-xr-x 2 user1 group1 2048 Jan 15 17:10 Example

위의 출력 예에서 각 줄의 첫 번째 문자는 나열된 개체가 파일인지 디렉토리인지를 나타낸다.

디렉토리는 (d)로 표시된다.

d가 없는 -로 표현된다면 myfile.txt파일이 일반 파일임을 나타낸다.

문자 rwx는 다양한 권한 수준을 나타낸다.

 

Permission Files Directories
r can read the file can ls the directory
w can write the file
can modify the directory's contents
x can execute the file can cd to the directory
  • 소유자 또는 사용자 권한 : 디렉토리(d) 슬롯 뒤의 첫 번째 세 문자 집합은 소유자(사용자라고도함)에 대한 권한 설정을 나타낸다.

ex) -rw-r--r-- 에서 소유자 권한은 rw- 소유자가 파일을 읽고 쓸 수 지만 프로그램으로 실행할 수는 없음을 나타낸다.

ex) drwxr-xr-x에서 소유자 권한은 rwx소유자 디렉토리를 보고, 수정하고, 입력할 수 있음을 나타낸다.

 

  • 그룹권한 : 두번째 rwx 집합은 그룹 권한을 나타낸다. 위의 예에서 네 번째 열은 group1 그룹 이름이다.

ex) -rw-r--r--에서 그룹 구성원은 파일을 읽을 수 만 있다.

ex) drwxr-xr-x에서 그룹 구성원은 디렉토리를 보고 들어갈 수 있다.

  • 기타 권한 : 최종 rwx세트는 "기타"에 대한 것이다. 그룹 외부에 있는 사람. 위의 두 예에서 모두 그룹과 동일한 권한으로 설정되어 있다.

파일 권한 변경

파일 및 디렉토리 권한을 변경하려면 명령 chmod(변경 모드)을 사용한다. 

파일 소유자는 읽기,쓰기,실행권한을 추가(+)하거나 빼거나(-), 사용자(u), 그룹(g) 또는 기타(o)의 권한을 변경 할 수 있다.

 

기호 방법

 

Access class Operator Access Type
u (user) + (add access) r (read)
g (group) - (remove access) w (write)
o (other) = (set exact access) x (execute)
a (all: u, g, and o)    

예를 들어 Unix 프롬프트에서 모든 사람이 현재 디렉토리의 파일을 읽을 수 있는 권한을 추가하려면,

chmod a+r myfile

엑세스 클래스를 생략하면, 모두로 간주되므로 이전 예제를 다음과 같이 입력할 수도 있다.

chmod +r myfile

단일 명령으로 여러 클래스와 유형을 지정할 수도 있다. 예를 들어, 라는 파일에 대한 그룹 및 다른 사용자의 읽기 및 쓰기 권한을 제거하려면(자신에게만 읽기 및 쓰기 권한이 있음) myfile다음을 입력한다.

chmod go-rw myfile

동일한 명령에서 다른 권한을 추가 및 제거하도록 지정할 수도 있습니다. 예를 들어, 쓰기 권한을 제거하고 모든 사용자에 대한 실행을 추가하려면 myfile다음을 입력한다.

chmod a-w+x myfile

 chmod명령은 디렉토리에서도 작동한다. 예를 들어, 라는 하위 디렉토리에서 다른 사용자의 쓰기 권한을 제거 mydir하려면 다음을 입력한다.

chmod ow mydir

현재 디렉토리에 대해 동일한 작업을 수행하려면 다음을 입력한다.

chmod o-w

지정된 디렉토리 아래의 모든 하위 디렉토리에서 권한을 재귀적으로 변경하려면 -R옵션을 추가하십시오. 예를 들어 다른 사용자에게 디렉토리(mydir)와 여기에 포함된 모든 하위 디렉토리에 대한 실행 권한을 부여 하려면 다음을 입력합니다.

chmod -R o+x mydir

절대형

명령 을 사용하는 다른 방법 chmod은 모든 액세스 클래스와 유형을 함께 결정하는 세 개의 숫자 집합을 지정하는 절대 형식입니다. 특정 속성만 변경할 수 있는 대신 파일 권한의 전체 상태를 지정해야 합니다.

사용자(또는 소유자), 그룹 및 기타의 세 가지 숫자가 순서대로 지정됩니다. 각 숫자는 읽기, 쓰기 및 실행 액세스를 지정하는 값의 합계입니다.

PermissionNumber

Permission Number
Read (r) 4
Write (w) 2
Execute (x) 1

부여하려는 권한의 번호를 추가하십시오. 예를 들어:

  • file myfile의 경우 자신에게 읽기, 쓰기 및 실행 권한을 부여(4+2+1=7)하고 그룹의 사용자에게 읽기 및 실행 권한(4+0+1=5)을 부여하고 다른 사용자에게만 실행 권한(4+0+1=5)을 부여합니다. 0+0+1=1), 다음을 사용합니다.
chmod 751 myfile
  • 현재 디렉토리에 대한 읽기, 쓰기 및 실행 권한을 자신에게만 부여하려면 다음을 사용합니다.
chmod 700

세 자리 숫자 시퀀스는 다음 표에서 선택한 속성의 합으로 생각할 수 있습니다.

Read by owner 400
Write by owner 200
Execute by owner 100
Read by group 040
Write by group 020
Execute by group 010
Read by others 004
Write by others 002
Execute by others 001

허용하려는 모든 액세스를 합산합니다. 예를 들어, (200+100=300)의 소유자에게 쓰기 및 실행 권한을 myfile부여하고 모두(400+040+004=444)에게 읽기 권한을 부여하려면 다음을 입력합니다.

chmod 744 myfile
777 anyone can do anything (read, write, or execute)
755 you can do anything; others can only read and execute
711 you can do anything; others can only execute
644 you can read and write; others can only read

다른 사용자와 데이터를 공유할 때 발생하는 일반적인 문제

소유한 파일 또는 디렉토리를 다른 사람과 공유하려면 해당 사용자에게 읽기 및 실행 권한을 부여할 수 있습니다. 그러나 공유 중인 항목 위의 모든 상위 디렉토리에도 동일한 권한을 설정해야 합니다. 그렇지 않으면 사용자는 파일이나 디렉토리 위의 모든 상위 디렉토리를 보고 변경할 수 없다.

 

파일 시스템을 물리적 장소로 생각한다면 권한은 다른 디렉토리에 액세스할 수 있는 키처럼 작동합니다.

  • 읽기( r) 권한을 사용하면 사용자 가 디렉토리를  수 있습니다 (ls).
  • 실행( x) 권한을 통해 사용자 는 (cd) 디렉토리로 이동할 수 있습니다.
  • 쓰기( w) 권한은 사용자가 파일 을 추가하고 제거 할 수 있도록 합니다.

예를 들어 누군가에게 에 대한 액세스 권한을 부여하고 싶다고 가정해 보겠습니다 /N/u/username/Carbonate/scripts. 경로를 물리적 공간으로 상상해보십시오.

  • /N당신이 살고있는 게이트 커뮤니티입니다.
  • /u는 단위입니다.
  • /username당신의 아파트입니다.
  • /Carbonate귀하의 아파트에 있는 방입니다.
  • /scripts당신의 방에 있는 옷장입니다.

누군가가 당신의 스크립트를 실행하고 싶다면 그 사람에게 의 모든 부분에 대한 액세스 권한을 부여해야 합니다 /N/u/username/Carbonate/scripts. 다음과 같은 방법으로 시도할 수 있습니다.

chmod +rx /N/u/username/Carbonate/scripts

그러나 사용자 가 상위 디렉토리에 대한 권한도 가지고 있지 않은 한 사용자는 하위 디렉토리를 읽거나 액세스할 수 없습니다 . 즉, 위의 명령은 옷장의 키를 제공하지만 방이나 아파트의 키를 제공하지 않습니다.

이 문제를 해결하려면 x제어하는 상위 디렉터리에 권한을 부여하세요.

chmod +x /N/u/username/
chmod +x /N/u/username/Carbonate

이렇게 하면 다른 사람들이 (cd) scripts디렉토리로 이동할 수 있습니다. r상위 디렉터리에는 권한 이 없기 때문에 사용자는 디렉터리 내에서만(ls) scripts파일 시스템의 나머지 부분을 비공개로 유지할 수 있습니다.

 

https://kb.iu.edu/d/abdb