13장. 파일 시스템 권한 관리
파일 시스템 권한은 사용자 및 그룹 계정에서 파일의 내용을 읽고 수정 및 실행하고 디렉토리를 입력할 수 있는 기능을 제어합니다. 무단 액세스로부터 데이터를 보호하려면 권한을 신중하게 설정합니다.
13.1. 파일 권한 관리
모든 파일 또는 디렉터리에는 세 가지 수준의 소유권이 있습니다.
- 사용자 소유자(u).
- 그룹 소유자(g).
- 기타(o).
각 소유권 수준은 다음 권한을 할당할 수 있습니다.
- 읽기(r).
- 쓰기(w).
- 실행(x).
파일에 대한 실행 권한을 사용하여 해당 파일을 실행할 수 있습니다. 디렉터리에 대한 실행 권한을 사용하면 디렉터리 내용에 액세스할 수 있지만 실행할 수는 없습니다.
새 파일 또는 디렉터리가 생성되면 기본 권한 집합이 자동으로 할당됩니다. 파일 또는 디렉토리에 대한 기본 권한은 다음 두 가지 요소를 기반으로 합니다.
- 기본 권한.
- 사용자 파일 생성 모드 마스크 (umask).
13.1.1. 기본 파일 권한
새 파일 또는 디렉터리가 생성될 때마다 기본 권한이 자동으로 할당됩니다. 파일 또는 디렉터리에 대한 기본 권한을 심볼릭 또는 8진수 값으로 표시할 수 있습니다.
권한 | 심볼릭 값 | 8진수 값 |
권한 없음 | --- | 0 |
실행 | --x | 1 |
쓰기 | -w- | 2 |
쓰기 및 실행 | -wx | 3 |
읽기 | r-- | 4 |
읽기 및 실행 | r-x | 5 |
읽기 및 쓰기 | rw- | 6 |
읽기, 쓰기, 실행 | rwx | 7 |
디렉터리의 기본 권한은 777
(drwxrwxrwx
)으로, 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여합니다. 즉, 디렉터리 소유자, 그룹 및 기타 사용자가 디렉터리의 콘텐츠를 나열하고 디렉터리 내에서 항목을 만들고 삭제하고 편집할 수 있습니다.
디렉터리 내의 개별 파일에는 무제한 디렉터리에 대한 액세스 권한이 있더라도 편집을 방해할 수 있는 자체 권한이 있을 수 있습니다.
파일의 기본 권한은 666
(-rw-rw-rw-
)으로, 모든 사용자에게 읽기 및 쓰기 권한을 부여합니다. 즉, 파일 소유자, 그룹 및 기타 사용자가 파일을 읽고 편집할 수 있습니다.
예 13.1. 파일에 대한 권한
파일에 다음 권한이 있는 경우:
$ ls -l -rwxrw----. 1 sysadmins sysadmins 2 Mar 2 08:43 file
-
-
파일이 파일임을 나타냅니다. -
rwx
는 파일 소유자가 파일을 읽고 쓰고 실행할 수 있는 권한이 있음을 나타냅니다. -
rw-
는 그룹에 읽기 및 쓰기 권한이 있지만 파일을 실행하지 않음을 나타냅니다. -
---
다른 사용자에게 파일을 읽고, 쓰거나, 실행할 수 있는 권한이 없음을 나타냅니다. -
.
은 SELinux 보안 컨텍스트가 파일에 대해 설정되었음을 나타냅니다.
예 13.2. 디렉토리에 대한 권한
디렉터리에 다음과 같은 권한이 있는 경우:
$ ls -dl directory drwxr-----. 1 sysadmins sysadmins 2 Mar 2 08:43 directory
-
d
는 디렉토리임을 나타냅니다. rwx
는 디렉터리 소유자가 디렉터리의 내용을 읽고 쓰고 액세스할 수 있는 권한이 있음을 나타냅니다.디렉터리 소유자로서 디렉터리 내의 항목(파일, 하위 디렉터리)을 나열하고 해당 항목의 내용에 액세스하여 수정할 수 있습니다.
-
R
-x
는 그룹에 디렉터리의 내용을 읽을 수 있는 권한이 있지만 쓸 수는 없음을 나타냅니다. 새 항목을 생성하거나 파일을 삭제할 수 없습니다.x
권한은cd
명령을 사용하여 디렉터리에 액세스할 수도 있음을 의미합니다. ---
다른 사용자에게 디렉터리 내용을 읽고, 쓰거나, 액세스할 수 있는 권한이 없음을 나타냅니다.사용자 소유자가 아니거나 디렉토리의 그룹 소유자로서는 디렉터리 내의 항목을 나열하거나, 해당 항목에 대한 정보에 액세스하거나, 수정할 수 없습니다.
-
.
은 SELinux 보안 컨텍스트가 디렉터리에 대해 설정되었음을 나타냅니다.
파일 또는 디렉터리에 자동으로 할당되는 기본 권한은 파일 또는 디렉터리가 로 끝나는 기본 권한이 아닙니다. 파일 또는 디렉토리를 만들면 기본 권한이 umask 에 의해 변경됩니다. 기본 권한과 umask 의 조합은 파일 및 디렉터리에 대한 기본 권한을 생성합니다.
13.1.2. 사용자 파일 생성 모드 마스크
user file-creation mode mask(umask)는 새로 생성된 파일 및 디렉터리에 대해 파일 권한이 설정되는 방법을 제어하는 변수입니다. CloudEvent 는 Linux 시스템의 전체 보안을 높이기 위해 기본 권한 값에서 권한을 자동으로 제거합니다. umask 는 심볼릭 또는 8진수 값으로 나타낼 수 있습니다.
권한 | 심볼릭 값 | 8진수 값 |
읽기, 쓰기 및 실행 | rwx | 0 |
읽기 및 쓰기 | rw- | 1 |
읽기 및 실행 | r-x | 2 |
읽기 | r-- | 3 |
쓰기 및 실행 | -wx | 4 |
쓰기 | -w- | 5 |
실행 | --x | 6 |
권한 없음 | --- | 7 |
표준 사용자의 기본 umask 는 0002
입니다. root
사용자의 기본 umask 는 0022
입니다.
umask 의 첫 번째 숫자는 특별 권한(고정 비트, )을 나타냅니다. umask 의 마지막 세 자리 숫자는 사용자 소유자(u), 그룹 소유자(g) 및 기타(o)에서 각각 제거된 권한을 나타냅니다.
예 13.3. 파일을 만들 때 umask 적용
다음 예제에서는 기본 권한이 640
인 파일을 생성하기 위해 8진수 값이 0137
인 umask 가 777
기본 권한이 있는 파일에 적용되는 방법을 보여줍니다.
13.1.3. 기본 파일 권한
기본 권한은 새로 생성된 모든 파일 및 디렉터리에 대해 자동으로 설정됩니다. 기본 권한의 값은 기본 권한에 umask 를 적용하여 결정됩니다.
예 13.4. 표준 사용자가 생성한 디렉터리에 대한 기본 권한
표준 사용자가 새 디렉토리 를 만들면 umask 가 002
(rwxrwxr-x
)로 설정되고 디렉터리의 기본 권한이 777
(rwxrwxrwx
)으로 설정됩니다. 그러면 775
(drwxrwxr-x
)에 기본 권한이 부여됩니다.
심볼릭 값 | 8진수 값 | |
기본 권한 | rwxrwxrwx | 777 |
umask | rwxrwxr-x | 002 |
기본 권한 | rwxrwxr-x | 775 |
즉, 디렉터리 소유자와 그룹은 디렉터리의 콘텐츠를 나열하고 디렉터리 내에서 항목을 만들고 삭제하고 편집할 수 있습니다. 다른 사용자는 디렉터리의 내용만 나열할 수 있으며 디렉토리의 하위 항목만 나열할 수 있습니다.
예 13.5. 표준 사용자가 생성한 파일에 대한 기본 권한
표준 사용자가 새 파일을 만들면 umask 가 002
(rwxrwxr-x
)로 설정되고 파일의 기본 권한이 666
(rw-rw-rw-
)으로 설정됩니다. 이렇게 하면 기본 권한은 664
(-rw-rw-r--
)입니다.
심볼릭 값 | 8진수 값 | |
기본 권한 | rw-rw-rw- | 666 |
umask | rwxrwxr-x | 002 |
기본 권한 | rw-rw-r-- | 664 |
즉, 파일 소유자와 그룹은 파일을 읽고 편집할 수 있지만 다른 사용자는 파일을 읽을 수만 있습니다.
예 13.6. root 사용자가 만든 디렉토리에 대한 기본 권한
루트 사용자가 새 디렉토리 를 만들면 umask 가 022
(rwxr-xr-x
)로 설정되고 디렉터리의 기본 권한이 777
(rwxrwxrwx
)으로 설정됩니다. 이렇게 하면 기본 권한은 755
(rwxr-xr-x
)입니다.
심볼릭 값 | 8진수 값 | |
기본 권한 | rwxrwxrwx | 777 |
umask | rwxr-xr-x | 022 |
기본 권한 | rwxr-xr-x | 755 |
즉, 디렉터리 소유자가 디렉터리의 내용을 나열하고 디렉터리 내에서 항목을 만들고 삭제하고 편집할 수 있습니다. 그룹 및 기타 그룹은 디렉터리의 내용만 나열하고 해당 디렉토리로 이동할 수 있습니다.
예 13.7. root 사용자가 생성한 파일에 대한 기본 권한
루트 사용자가 새 파일을 만들면 umask 가 022
(rwxr-xr-x
)로 설정되고 파일의 기본 권한이 666
(rw-rw-rw-
)으로 설정됩니다. 이렇게 하면 기본 권한이 644
(-rw-r-r--
).
심볼릭 값 | 8진수 값 | |
기본 권한 | rw-rw-rw- | 666 |
umask | rwxr-xr-x | 022 |
기본 권한 | rw-r—r-- | 644 |
즉, file 소유자는 파일을 읽고 편집할 수 있지만 그룹 및 기타 사용자는 파일을 읽을 수 있습니다.
보안상의 이유로 umask 가 000
(rwxrwxrwx
)으로 설정된 경우에도 일반 파일은 기본적으로 실행 권한을 가질 수 없습니다. 그러나 실행 권한으로 디렉터리를 생성할 수 있습니다.
13.1.4. 심볼릭 값을 사용하여 파일 권한 변경
chmod
유틸리티를 심볼릭 값(복합 문자 및 기호)과 함께 사용하여 파일 또는 디렉토리의 파일 권한을 변경할 수 있습니다.
다음 권한을 할당할 수 있습니다.
- 읽기 (r)
- 쓰기 (w)
- 실행 (x)
권한을 다음 수준의 소유권 에 할당할 수 있습니다.
- 사용자 소유자 (u)
- 그룹 소유자(g)
- 기타 (o)
- 모두 (a)
권한을 추가하거나 제거하려면 다음 기호를 사용할 수 있습니다 :
-
+
: 기존 권한 위에 권한을 추가합니다. -
-
기존 권한에서 권한을 제거하려면 - -
=
- 기존 권한을 제거하고 명시적으로 새 권한을 정의합니다.
절차
파일 또는 디렉토리에 대한 권한을 변경하려면 다음을 사용합니다.
$ chmod <level><operation><permission> file-name
<level>
을 권한을 설정할 소유권 수준으로 바꿉니다.<operation>
를 기호 중 하나로 바꿉니다.<permission>
을 할당하려는 권한 으로 바꿉니다. file-name 을 파일 또는 디렉터리의 이름으로 바꿉니다. 예를 들어 모든 사용자에게 읽기, 쓰기, 실행(rwx
)my-script.sh
에 대한 권한을 부여하려면chmod a=rwx my-script.sh
명령을 사용합니다.자세한 내용은 기본 파일 권한을 참조하십시오.
검증
특정 파일의 권한을 보려면 다음을 사용합니다.
$ ls -l file-name
file-name 을 파일 이름으로 바꿉니다.
특정 디렉터리에 대한 권한을 보려면 다음을 사용합니다.
$ ls -dl directory-name
directory-name 을 디렉터리 이름으로 바꿉니다.
특정 디렉토리 내의 모든 파일에 대한 권한을 보려면 다음을 사용합니다.
$ ls -l directory-name
directory-name 을 디렉터리 이름으로 바꿉니다.
예 13.8. 파일 및 디렉토리에 대한 권한 변경
my-file.txt
의 파일 권한을-rw-rw-r--
에서-rw------
로 변경하려면 다음을 사용합니다.my-file.txt
의 현재 권한을 표시합니다 :$ ls -l my-file.txt -rw-rw-r--. 1 username username 0 Feb 24 17:56 my-file.txt
그룹 소유자(
g
) 및 기타(o
)에서 파일을 읽기, 쓰기, 실행(rwx
)할 수 있는 권한을 제거합니다.$ chmod go= my-file.txt
등호(
=
) 후에 지정되지 않는 모든 권한은 자동으로 금지됩니다.my-file.txt
에 대한 권한이 올바르게 설정되었는지 확인합니다.$ ls -l my-file.txt -rw-------. 1 username username 0 Feb 24 17:56 my-file.txt
my-directory
의 파일 권한을drwxrwx---에서
로 변경하려면 다음을 사용합니다.drwx
rwxr-xmy-directory
에 대한 현재 권한을 표시합니다.$ ls -dl my-directory drwxrwx---. 2 username username 4096 Feb 24 18:12 my-directory
모든 사용자(
a
)에 대해 읽기 및 실행(r-x
) 액세스를 추가합니다.$ chmod o+rx my-directory
my-directory
및 해당 콘텐츠에 대한 권한이 올바르게 설정되었는지 확인합니다.$ ls -dl my-directory drwxrwxr-x. 2 username username 4096 Feb 24 18:12 my-directory
13.1.5. 8진수 값을 사용하여 파일 권한 변경
chmod
유틸리티를 8진수 값(숫자)과 함께 사용하여 파일 또는 디렉터리의 파일 권한을 변경할 수 있습니다.
절차
기존 파일 또는 디렉터리에 대한 파일 권한을 변경하려면 다음을 사용합니다.
$ chmod octal_value file-name
file-name 을 파일 또는 디렉터리의 이름으로 바꿉니다. octal_value 를 8진수 값으로 교체합니다. 자세한 내용은 기본 파일 권한을 참조하십시오.