리눅스 및 유닉스 운영 체제에서는 모든 새 파일이 기본 사용 권한 세트로 생성됩니다. umask 유틸리티를 사용하면 파일 모드 생성 마스크를 보거나 설정할 수 있습니다. 이 마스크는 새로 생성된 파일 또는 디렉토리에 대한 사용 권한 비트를 결정합니다.
새 파일과 디렉토리를 생성하는 mkdir, touch, tee 및 기타 명령에 사용됩니다.
리눅스 권한
리눅스 권한 모델에 대해 간단히 설명하겠습니다.
리눅스의 경우 각 파일은 소유자 및 그룹과 연결되며 세 가지 다른 클래스의 사용자에 대한 사용 권한 액세스 권한이 할당됩니다.
- 파일 소유자
- 그룹 멤버
- 다른 모든 사람
각 클래스에 적용되는 세 가지 권한 유형이 있습니다.
- 읽기 권한
- 쓰기 사용 권한
- 실행 권한
이 개념을 사용하면 파일을 읽거나, 파일에 쓰거나, 파일을 실행할 수 있는 사용자를 지정할 수 있습니다.
파일 사용 권한을 보려면 ls 명령을 사용합니다.
ls -l dirname
# drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname
# |[-][-][-] [------] [---]
# | | | | | |
# | | | | | +-----------> Group
# | | | | +-------------------> Owner
# | | | +----------------------------> Others Permissions
# | | +-------------------------------> Group Permissions
# | +----------------------------------> Owner Permissions
# +------------------------------------> File Type
첫 번째 문자는 일반 파일(-), 디렉터리(d), 심볼 링크(l) 또는 기타 특수 파일 유형이 될 수 있는 파일 형식을 나타냅니다.
다음 9자는 사용 권한을 나타내며, 각각 3자로 구성된 세 개의 문자 세트를 나타냅니다. 첫 번째 세트는 소유자 권한을 나타내고, 두 번째 세트는 그룹 권한을 나타내며, 마지막 세트는 다른 모든 권한을 표시합니다.
8진수 값이 4인 문자는 읽기, w는 쓰기 8진수 값 2, x는 실행 권한 8진수 값 1, -는 권한 없음 8진수 값 0을 나타냅니다.
또한 setuid, setgid 및 Sticky Bit의 세 가지 특수 파일 권한 유형이 있습니다.
위의 예(rwxr-x)에서 소유자는 읽기, 쓰기 및 실행 권한(rwx)을 가지고 있으며 그룹 및 다른 소유자는 읽기 및 실행 권한을 가지고 있습니다.
숫자 표기법을 사용하여 파일 권한을 나타낼 경우 숫자 755가 나옵니다.
- Owner: rwx = 4+2+1 = 7
- Group: r-x = 4+0+1 = 5
- Other: r-x = 4+0+1 = 5
숫자 표기법으로 표시할 경우 사용 권한은 3자리 또는 4자리 8진수(0-7)를 가질 수 있습니다. 첫 번째 숫자는 특수 사용 권한을 나타내며, 이 권한을 생략할 경우 파일에 특별한 사용 권한이 설정되어 있지 않음을 의미합니다. 이 예제에서 755는 0755와 동일합니다. 첫 번째 자릿수는 setuid의 경우 4, setgid의 경우 2, Sticky Bit의 경우 1의 조합이 될 수 있습니다.
chmod 명령과 chown 명령을 사용하여 파일 권한을 변경할 수 있습니다.
umask를 이해
기본적으로 Linux 시스템에서는 사용자, 그룹 등에 읽기 및 쓰기 권한을 부여하는 파일에 대한 기본 생성 권한은 666이며 디렉토리의 경우 777입니다. 즉, 사용자, 그룹 등에 대한 읽기, 쓰기 및 실행 권한을 의미합니다. 리눅스는 실행 권한으로 파일을 생성하는 것을 허용하지 않습니다.
기본 생성 권한은 umask 유틸리티를 사용하여 수정할 수 있습니다.
umask는 현재 셸 환경에만 영향을 줍니다. 대부분의 Linux 배포에서 기본 시스템 전체 umask 값은 pam_umask.so 또는 /etc/profile 파일에 설정됩니다.
사용자별로 다른 값을 지정하려면 ~/.bashrc 또는 ~//zshrc와 같은 사용자의 셸 구성 파일을 편집하십시오. 또한 원하는 값에 이어 u마스크를 실행하여 현재 세션 umask 값을 변경할 수도 있습니다.
현재 마스크 값을 보려면 인수 없이 umask를 입력하면 됩니다.
umask
# 022
umask 값에는 새로 생성된 파일 및 디렉터리에 설정되지 않는 사용 권한 비트가 포함되어 있습니다.
이미 언급한 바와 같이, 파일에 대한 기본 생성 권한은 666과 777 디렉토리에 대한 권한입니다. 새 파일의 사용 권한 비트를 계산하려면 기본값에서 umask 값을 뺍니다.
예를 들어, umask 022가 새로 생성된 파일과 디렉토리에 미치는 영향을 계산하려면 다음을 사용합니다.
- file: 666 - 022 = 644입니다. 소유자는 파일을 읽고 수정할 수 있습니다. 그룹 및 다른 그룹은 파일을 읽기만 할 수 있습니다.
- directory: 777 - 022 = 755입니다.소유자는 디렉토리에 CD를 넣고 디렉토리의 파일을 나열, 읽기, 수정, 생성 또는 삭제할 수 있습니다. 그룹 및 다른 사용자는 디렉토리에 CD를 넣고 파일을 나열하고 읽을 수 있습니다.
-S 옵션을 사용하여 마스크 값을 기호 표기법으로 표시할 수도 있습니다.
umask -S
# u=rwx,g=rx,o=rx
숫자 표기법과 달리 기호 표기법 값에는 새로 생성된 파일 및 디렉터리에 설정될 사용 권한 비트가 포함됩니다.
마스크 값을 설정
파일 생성 마스크는 8진수 또는 기호 표기법을 사용하여 설정할 수 있습니다.
변경 내용을 영구화하려면 모든 사용자에게 영향을 줄 /etc/profile 파일과 같은 글로벌 구성 파일 또는 사용자에게만 영향을 미치는 ~//bashrc 또는 ~/zshrc와 같은 사용자의 셸 구성 파일에서 새 umask 값을 설정합니다. 사용자 파일이 글로벌 파일보다 우선합니다.
umask 값을 변경하기 전에 새 값이 잠재적인 보안 위험을 초래하지 않는지 확인하십시오. 022보다 덜 제한적인 값은 매우 주의하여 사용해야 합니다. 예를 들어 umask000은 새로 생성된 모든 파일에 대한 읽기, 쓰기 및 실행 권한을 가진 모든 사용자를 의미합니다.
새로 생성된 파일 및 디렉토리에 대해 좀 더 제한적인 권한을 설정하여 다른 사용자가 디렉토리에 CD를 저장하고 파일을 읽을 수 없도록 하겠다고 가정해 보겠습니다. 저희가 원하는 권한은 디렉토리에 대해 750개, 파일에 대해 640개입니다.
u마스크 값을 계산하려면 기본 권한에서 원하는 권한을 빼기만 하면 됩니다.
Umask 값: 777-750 = 027
숫자 표기법으로 표시되는 원하는 umask 값은 027입니다.
시스템 전체에 새 값을 영구적으로 설정하려면 텍스트 편집기를 사용하여 /etc/profile 파일을 여십시오.
파일 시작 부분에 다음 줄을 변경하거나 추가합니다.
# /etc/profile
umask 027
변경 내용을 적용하려면 다음 소스 명령을 실행하거나 로그아웃한 후 로그인하십시오.
source /etc/profile
새 설정을 확인하기 위해 mkdir를 사용하여 새 파일 및 디렉토리 하나를 생성하고 다음을 터치합니다.
mkdir newdir
touch newfile
ls 명령을 사용하여 권한을 확인하는 경우, 새 파일은 640개의 권한을 가지며 새 디렉토리는 750개의 권한을 가집니다.
# drwxr-x--- 2 jjeongil users 4096 Jul 4 18:14 newdir
# -rw-r----- 1 jjeongil users 0 Jul 4 18:14 newfile
파일 생성 마스크를 설정하는 또 다른 방법은 기호 표기법을 사용하는 것입니다. 예를 들어, umask u=rwx,g=html,o=는 umask 027과 동일합니다.
Linux 권한과 umask 명령을 사용하여 새로 생성된 파일 또는 디렉토리에 대한 권한 비트를 설정하는 방법에 대해 설명했습니다.
자세한 내용을 보려면 터미널에 man umask를 입력하십시오.
'SW > 리눅스' 카테고리의 다른 글
Linux : Groups 나열 방법, 예제, 명령어 (0) | 2021.10.22 |
---|---|
Raspberry Pi 3 : OpenCV 설치 방법, 예제, 명령어 (0) | 2021.10.21 |
Linux : Less 명령어, 사용 방법, 예제 (0) | 2021.10.19 |
Debian 9 : VLC Media Player 설치 방법, 예제, 명령어 (0) | 2021.10.18 |
Linux : psql 사용하여 PostgreSQL 데이터베이스, 테이블 나열 방법, 예제, 명령어 (0) | 2021.10.17 |