SW/리눅스

Linux : Chmod 명령어 (파일 권한) 예제, 명령어, 사용 방법

얇은생각 2022. 2. 24. 07:30
반응형

Linux에서는 파일 권한, 속성 및 소유권을 통해 파일에 대한 액세스를 관리합니다. 이렇게 하면 인증된 사용자 및 프로세스만 파일 및 디렉토리에 액세스할 수 있습니다. 

chmod 명령을 사용하여 파일 및 디렉토리의 액세스 권한을 변경하는 방법에 대해 설명합니다.

 

 

 

리눅스 파일 사용 권한

더 나아가기 전에 기본 Linux 권한 모델에 대해 설명하겠습니다.

Linux에서 각 파일은 소유자 및 그룹과 연결되고 세 가지 등급의 사용자에 대한 권한 액세스 권한이 할당됩니다.

- 파일 소유자

- 그룹 구성원

- 다른 사람들(다른 모든 사람들)

 

chown 및 chgrp 명령을 사용하여 파일 소유권을 변경할 수 있습니다.

각 클래스에 적용되는 파일 권한 유형은 세 가지가 있습니다.

- 읽기 권한

- 쓰기 권한

- 실행 권한

 

이 개념을 사용하면 파일을 읽고 파일에 쓰거나 실행할 수 있는 사용자를 지정할 수 있습니다.

ls 명령을 사용하여 파일 권한을 볼 수 있습니다.

 

ls -l filename.txt

# -rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
# |[-][-][-]-   [------] [---]
# | |  |  | |      |       |
# | |  |  | |      |       +-----------> 7. Group
# | |  |  | |      +-------------------> 6. Owner
# | |  |  | +--------------------------> 5. Alternate Access Method
# | |  |  +----------------------------> 4. Others Permissions
# | |  +-------------------------------> 3. Group Permissions
# | +----------------------------------> 2. Owner Permissions
# +------------------------------------> 1. File Type

 

 

첫 번째 문자는 파일 형식을 표시합니다. 일반 파일(-), 디렉터리(d), 심볼릭 링크(l) 또는 기타 특수 파일 형식일 수 있습니다.

다음 9개 문자는 파일 사용 권한을 나타내며, 각각 3개의 문자로 이루어진 세 개의 세 개의 세 개의 문자를 나타냅니다. 첫 번째 삼중항은 소유자 권한, 두 번째 삼중항은 그룹 권한, 마지막 삼중항은 다른 모든 권한을 표시합니다. 사용 권한은 파일 형식에 따라 다른 의미를 가질 수 있습니다.

위의 예(rw-r----)에서 파일 소유자는 읽기 및 쓰기 권한(rw-)을 가지고 있으며 그룹 및 다른 사용자는 읽기 권한(r--)만 가지고 있음을 의미합니다. 

세 개의 권한 세 쌍둥이는 각각 다음 문자로 구성될 수 있으며 파일 또는 디렉터리로 설정되었는지 여부에 따라 서로 다른 영향을 미칩니다.

 

 

 

사용 권한이 파일에 미치는 영향

Linux : Chmod 명령어 (파일 권한) 예제, 명령어, 사용 방법 1

 

 

 

사용 권한이 디렉토리(폴더)에 미치는 영향

리눅스에서 디렉토리는 다른 파일 및 디렉터리를 포함하는 특수 파일 유형입니다.

Linux : Chmod 명령어 (파일 권한) 예제, 명령어, 사용 방법 2

 

 

 

chmod를 사용

chmod 명령은 다음과 같은 일반 형식을 사용합니다.

chmod [OPTIONS] MODE FILE...

 

 

새로운 프로모션에 대한 자세한 내용을 보려면 클릭하십시오.

chmod 명령을 사용하면 심볼 모드 또는 숫자 모드 또는 참조 파일을 사용하여 파일에 대한 사용 권한을 변경할 수 있습니다. 이 기사의 뒷부분에서 모드에 대해 더 자세히 설명하겠습니다. 명령은 공백으로 구분된 하나 이상의 파일 및/또는 디렉토리를 인수로 승인할 수 있습니다.

루트, 파일 소유자 또는 sudo 권한이 있는 사용자만 파일의 권한을 변경할 수 있습니다. chmod를 사용할 때, 특히 사용 권한을 반복적으로 변경할 때는 각별히 주의하십시오.

 

 

 

기호(텍스트) 메서드

심볼 모드를 사용할 때 chmod 명령의 구문은 다음과 같은 형식을 가집니다.

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

 

 

사용자 플래그인 첫 번째 플래그 집합([ugoa…])은 파일에 대한 사용 권한을 변경할 사용자를 정의합니다.

u - 파일 소유자입니다.

g - 그룹의 구성원인 사용자입니다.

o - 다른 모든 사용자입니다.

a - 모든 사용자가 ugo와 동일합니다.

 

사용자 플래그가 생략된 경우 기본 플래그가 a이며 umask에 의해 설정된 권한은 영향을 받지 않습니다.

 

작업 플래그인 두 번째 플래그 세트([-+=])는 권한을 제거, 추가 또는 설정할지 여부를 정의합니다.

- 지정된 권한을 제거합니다.

+ 지정된 권한을 추가합니다.

= 현재 권한을 지정된 권한으로 변경합니다. = 기호 뒤에 권한이 지정되지 않은 경우 지정된 사용자 클래스의 모든 권한이 제거됩니다.

권한(perms...)은 0 또는 r, w, x, X, s 및 t 중 하나 이상을 사용하여 명시적으로 설정할 수 있습니다. 권한을 한 사용자 클래스에서 다른 사용자 클래스로 복사할 때 u, g 및 o 집합의 단일 문자를 사용합니다.

둘 이상의 사용자 클래스([,…])에 대한 사용 권한을 설정할 때는 쉼표(공백 없음)를 사용하여 기호 모드를 구분합니다.

 

다음은 기호 모드에서 chmod 명령을 사용하는 몇 가지 예입니다.

그룹 구성원에게 파일을 읽고 쓸 수 있는 권한을 주되 파일을 쓰고 실행하지는 마십시오.

chmod g=r filename

 

 

모든 사용자에 대한 실행 권한을 제거합니다.

chmod a-x filename

 

 

다른 사용자에 대한 쓰기 권한을 재귀적으로 제거합니다.

chmod -R o-w dirname

 

 

파일 소유자를 제외한 모든 사용자에 대한 읽기, 쓰기 및 실행 권한을 제거합니다.

chmod og-rwx filename

 

 

다음 형식을 사용하여 동일한 작업을 수행할 수도 있습니다.

chmod og= filename

 

 

파일 소유자에게 읽기, 쓰기 및 실행 권한을 부여하고 파일 그룹에 읽기 권한을 부여하며 다른 모든 사용자에게는 권한을 부여하지 않습니다.

chmod u=rwx,g=r,o= filename

 

 

파일 그룹 구성원이 가지는 권한에 파일의 소유자 권한을 추가합니다.

chmod g+u filename

 

 

지정된 디렉토리에 고정 비트를 추가합니다.

chmod o+t dirname

 

 

 

숫자 메서드

숫자 메서드를 사용할 때 chmod 명령의 구문은 다음과 같은 형식을 가집니다.

chmod [OPTIONS] NUMBER FILE...

 

 

숫자 모드를 사용할 때 세 가지 사용자 클래스(소유자, 그룹 및 기타 모든 클래스) 모두에 대한 사용 권한을 동시에 설정할 수 있습니다.

숫자는 3자리 또는 4자리 숫자일 수 있습니다.

3자리 숫자를 사용할 경우 첫 번째 숫자는 파일 소유자의 사용 권한, 두 번째 숫자는 파일 그룹, 마지막 숫자는 다른 모든 사용자의 사용 권한을 나타냅니다.

각 쓰기, 읽기 및 실행 권한에는 다음 숫자 값이 있습니다.

r (읽기) = 4

w (쓰기) = 2

x(수치) = 1

권한이 없습니다 = 0

 

특정 사용자 클래스의 사용 권한 번호는 해당 그룹에 대한 사용 권한 값의 합으로 표시됩니다.

숫자 모드에서 파일의 사용 권한을 확인하려면 모든 사용자 클래스의 합계를 계산하면 됩니다. 예를 들어 파일 소유자에게 읽기, 쓰기 및 실행 권한을 부여하려면 파일 그룹에 대한 읽기 및 실행 권한과 다른 모든 사용자에게만 읽기 권한을 부여해야 합니다.

소유자: rwx=4+2+1=7

그룹: r-x=4+0+1=5

기타: r-x=4+0+0=4

 

위의 방법을 사용하여 원하는 권한을 나타내는 숫자 754에 도달했습니다.

setuid, setgid 및 고정 비트 플래그를 설정하려면 4자리 숫자를 사용합니다.

4자리 숫자를 사용할 때 첫 번째 자리에는 다음과 같은 의미가 있습니다.

setuid=4

setgid=2

sticky=1

no changes = 0

 

다음 세 자리는 3자리 숫자를 사용할 때와 의미가 같습니다. 

첫 번째 숫자가 0이면 생략할 수 있으며 모드를 3자리로 나타낼 수 있습니다. 숫자 모드 0755는 755와 같습니다.

숫자 모드를 계산하려면 다른 방법(이진 방법)을 사용할 수도 있지만 조금 더 복잡합니다. 대부분의 사용자는 4, 2, 1을 사용하여 숫자 모드를 계산하는 방법을 알고 있으면 충분합니다.

stat 명령을 사용하여 숫자 표기법으로 파일의 사용 권한을 확인할 수 있습니다.

stat -c "%a" filename

# 644

 

 

다음은 숫자 모드에서 chmod 명령을 사용하는 몇 가지 예입니다.

파일 소유자에게 읽기 및 쓰기 권한을 부여하고 그룹 구성원과 다른 모든 사용자에게만 읽기 권한을 부여합니다.

chmod 644 dirname

 

 

파일 소유자에게 읽기, 쓰기 및 실행 권한, 그룹 구성원에게는 읽기 및 실행 권한을 부여하고 다른 모든 사용자에게는 권한을 부여하지 마십시오.

chmod 750 dirname

 

 

지정된 디렉터리에 읽기, 쓰기 및 실행 권한과 고정 비트를 부여합니다.

chmod 1777 dirname

 

 

파일 소유자에게 읽기, 쓰기 및 실행 권한을 재귀적으로 설정하고 지정된 디렉터리의 다른 모든 사용자에 대한 권한은 없습니다.

chmod -R 700 dirname

 

 

 

참조 파일을 사용

--reference=ref_file 옵션을 사용하면 파일의 사용 권한을 지정된 참조 파일(ref_file)의 사용 권한과 동일하게 설정할 수 있습니다.

chmod --reference=REF_FILE FILE

 

 

예를 들어, 다음 명령은 file1의 권한을 file2에 할당합니다.

chmod --reference=file1 file2

 

 

 

파일의 사용 권한을 반복적으로 변경

지정된 디렉토리의 모든 파일 및 디렉토리에서 재귀적으로 작업하려면 -R(--재귀) 옵션을 사용하십시오.

chmod -R MODE DIRECTORY

 

 

예를 들어 /var/www 디렉터리에 있는 모든 파일 및 하위 디렉터리의 사용 권한을 755로 변경하려면 다음을 사용합니다.

chmod -R 755 /var/www

 

 

 

심볼 링크에서 작동

심볼릭 링크에는 항상 777개의 권한이 있습니다.

기본적으로 심볼링크의 사용 권한을 변경할 때 chmod는 링크가 가리키는 파일의 사용 권한을 변경합니다.

chmod 755 symlink

 

 

대상 소유권을 변경하는 대신 "'symlink'에 액세스할 수 없음: 권한 거부" 오류가 발생할 수 있습니다.

이 오류는 대부분의 리눅스 배포에서 기본적으로 심볼 링크가 보호되고 대상 파일에서 작업할 수 없기 때문에 발생합니다. 이 옵션은 /proc/sys/fs/protected_symlinks에 지정되어 있습니다. 1은 사용 가능, 0은 사용 불가능을 의미합니다. 심볼 링크 보호를 비활성화하지 않는 것이 좋습니다.

 

 

 

대량으로 파일 사용 권한을 변경

파일 및 디렉터리 권한을 대량으로 변경해야 하는 경우도 있습니다.

가장 일반적인 시나리오는 웹 사이트 파일의 사용 권한을 644로, 디렉터리의 사용 권한을 755로 반복적으로 변경하는 것입니다.

 

숫자 방법을 사용합니다.

find /var/www/my_website -type d -exec chmod 755 {} \;
find /var/www/my_website -type f -exec chmod 644 {} \;

 

 

심볼 메서드를 사용합니다.

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

 

 

find 명령은 /var/ww/my_website에서 파일 및 디렉토리를 검색하고 발견된 각 파일과 디렉토리를 chmod 명령에 전달하여 권한을 설정합니다.

chmod 명령은 파일의 사용 권한을 변경합니다. 사용 권한은 심볼 모드 또는 숫자 모드를 사용하여 설정할 수 있습니다.

chmod에 대해 자세히 알아보려면 chmod man 페이지를 방문하십시오.

반응형