기계적 인조 인간

리눅스에서 Chmod 명령 (파일 권한)

Linux - Change Permissions and Ownership for Files and Folders (chmod, chown, members, groups )

Linux - Change Permissions and Ownership for Files and Folders (chmod, chown, members, groups )

차례:

Anonim

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 자씩 3 개의 3 자입니다. 첫 번째 삼중 항은 소유자 권한, 두 번째 하나의 그룹 권한을 표시하고 마지막 삼중 항은 다른 모든 권한을 표시합니다. 파일 유형에 따라 권한이 다른 의미를 가질 수 있습니다.

위의 예에서 ( rw-r--r-- )은 파일 소유자에게 읽기 및 쓰기 권한 ( rw- )이 있고 그룹 및 다른 사람들에게는 읽기 권한 ( r-- ) 만 있음을 의미합니다.

세 가지 권한 트리플렛 각각은 다음 문자로 구성 될 수 있으며 파일 또는 디렉토리로 설정되었는지에 따라 다른 효과를 갖습니다.

파일에 대한 권한의 영향

허가 캐릭터 파일의 의미
읽다 - 파일을 읽을 수 없습니다. 파일 내용을 볼 수 없습니다.
r 파일을 읽을 수 있습니다.
쓰다 - 파일을 변경하거나 수정할 수 없습니다.
w 파일을 변경하거나 수정할 수 있습니다.
실행 - 파일을 실행할 수 없습니다.
x 파일을 실행할 수 있습니다.
s user 삼중 항에서 발견되면 setuid 비트를 설정합니다. group 삼중 항에서 발견되면 setgid 비트를 설정합니다. 또한 x 플래그가 설정되어 있음을 의미합니다.

setuid 또는 setgid 플래그가 실행 파일에 설정되면 파일의 소유자 및 / 또는 그룹 권한으로 파일이 실행됩니다.

S s 와 동일하지만 x 플래그가 설정되지 않았습니다. 이 플래그는 파일에서 거의 사용되지 않습니다.
t others 트리플렛에서 발견되면 sticky 비트를 설정합니다.

또한 x 플래그가 설정되어 있음을 의미합니다. 이 플래그는 파일에서 쓸모가 없습니다.

T t 와 동일하지만 x 플래그가 설정되지 않았습니다. 이 플래그는 파일에서 쓸모가 없습니다.

디렉토리에 대한 권한의 영향 (폴더)

Linux에서 디렉토리는 다른 파일과 디렉토리를 포함하는 특수한 유형의 파일입니다.

허가 캐릭터 디렉토리의 의미
읽다 - 디렉토리의 내용을 표시 할 수 없습니다.
r 디렉토리의 내용을 볼 수 있습니다.

(예: ls 하여 디렉토리 내의 파일을 나열 할 수 있습니다.)

쓰다 - 디렉토리의 내용은 변경할 수 없습니다.
w 디렉토리의 내용을 변경할 수 있습니다.

(예: 새 파일을 만들거나 파일 등을 삭제할 수 없습니다.)

실행 - 디렉토리를 변경할 수 없습니다.
x cd 사용하여 디렉토리를 탐색 할 수 있습니다.
s user 삼중 항에서 발견되면 setuid 비트를 설정합니다. group 삼중 항에서 발견되면 setgid 비트를 설정합니다. 또한 x 플래그가 설정되어 있음을 의미합니다. setgid 플래그가 디렉토리에 설정되면 디렉토리에서 작성된 새 파일은 파일을 작성한 사용자의 1 차 그룹 ID 대신 디렉토리 그룹 ID (GID)를 상속합니다.

setuid 는 디렉토리에 영향을 미치지 않습니다.

S s 와 동일하지만 x 플래그가 설정되지 않았습니다. 이 플래그는 디렉토리에서 쓸모가 없습니다.
t others 트리플렛에서 발견되면 sticky 비트를 설정합니다.

또한 x 플래그가 설정되어 있음을 의미합니다. 고정 비트가 디렉토리에 설정되면 파일 소유자, 디렉토리 소유자 또는 관리 사용자 만 디렉토리 내의 파일을 삭제하거나 이름을 바꿀 수 있습니다.

T t 와 동일하지만 x 플래그가 설정되지 않았습니다. 이 플래그는 디렉토리에서 쓸모가 없습니다.

chmod 사용

chmod 명령은 다음과 같은 일반적인 형식을 따릅니다.

chmod MODE FILE…

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

root, 파일 소유자 또는 sudo 권한을 가진 사용자 만 파일의 권한을 변경할 수 있습니다. chmod 를 사용할 때, 특히 재귀 적으로 권한을 변경할 때 특히주의하십시오.

기호 (텍스트) 방법

기호 모드를 사용할 때 chmod 명령의 구문은 다음 형식을 갖습니다.

chmod perms… FILE…

첫 번째 플래그 집합 ( ), users 플래그는 파일에 대한 권한이 변경되는 사용자 클래스를 정의합니다.

  • u 파일 소유자 g 그룹의 구성원 인 사용자 o 다른 모든 사용자 ugo 와 동일한 모든 사용자.

users 플래그를 생략하면 기본 플래그는 a 이며 umask로 설정된 권한은 영향을받지 않습니다.

두 번째 플래그 집합 ( ), 작업 플래그는 권한을 제거, 추가 또는 설정할지 여부를 정의합니다.

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

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

둘 이상의 사용자 클래스에 대한 권한을 설정하는 경우 ( )의 경우 공백없이 쉼표를 사용하여 기호 모드를 구분하십시오.

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

  • 파일을 읽고 실행할 수는 없지만 그룹 구성원에게 파일을 읽을 수있는 권한을 부여하십시오.

    chmod g=r filename

    모든 사용자에 대한 실행 권한을 제거하십시오.

    chmod ax filename

    다른 사용자에 대한 쓰기 권한을 거부하십시오.

    chmod -R ow 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 NUMBER FILE…

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

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

3 자리 숫자가 사용될 때 첫 번째 숫자는 파일 소유자의 권한, 파일 그룹의 두 번째 권한 및 다른 모든 사용자의 권한을 나타냅니다.

각 쓰기, 읽기 및 실행 권한은 다음과 같은 숫자 값을 갖습니다.

  • r (읽기) = 4w (쓰기) = 2 x (실행) = 1 권한 없음 = 0

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

숫자 모드에서 파일의 권한을 찾으려면 모든 사용자 클래스의 총계를 계산하십시오. 예를 들어 파일 소유자에게 읽기, 쓰기 및 실행 권한을 부여하고 파일 그룹에 대한 읽기 및 실행 권한과 다른 모든 사용자에게만 읽기 권한을 부여하려면 다음을 수행하십시오.

  • 소유자: rwx = 4 + 2 + 1 = 7 그룹: rx = 4 + 0 + 1 = 5 기타: rx = 4 + 0 + 0 = 4

위의 방법을 사용하면 원하는 권한을 나타내는 숫자 754 가 나타납니다.

setuid , setgid sticky bit 플래그를 설정하려면 4 자리 숫자를 사용하십시오.

4 자리 숫자를 사용하는 경우 첫 번째 숫자는 다음과 같은 의미를 갖습니다.

  • setuid = 4setgid = 2sticky = 1 변경 사항 없음 = 0

다음 3 자리 숫자는 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 ( --recursive ) 옵션을 사용하십시오.

chmod -R MODE DIRECTORY

예를 들어, /var/www 디렉토리 아래의 모든 파일 및 서브 디렉토리의 권한을 755 하려면 다음을 사용하십시오.

chmod -R 755 /var/www

심볼릭 링크에서 작동

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

기본적으로 symlink의 권한을 변경하면 chmod 는 링크가 가리키는 파일에 대한 권한을 변경합니다.

chmod 755 symlink

대상 소유권을 변경하는 대신 " 'symlink'에 액세스 할 수 없습니다: 권한이 거부되었습니다"라는 오류가 표시 될 수 있습니다.

대부분의 Linux 배포에서 심볼릭 링크가 기본적으로 보호되어 대상 파일에서 작업 할 수 없기 때문에 오류가 발생합니다. 이 옵션은 /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/www/my_website 에서 파일과 디렉토리를 검색하고 찾은 각 파일과 디렉토리를 chmod 명령에 전달하여 권한을 설정합니다.

결론

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

chmod 에 대한 자세한 내용은 chmod 매뉴얼 페이지를 참조하십시오.

chmod 터미널