마스크

umask
마스크
원저작자AT&T 벨 연구소
개발자다양한 오픈 소스 및 상용 개발자
초기 릴리즈1978년, 44년(연장)
운영 체제Unix 및 Unix 유사
플랫폼크로스 플랫폼
유형명령어

컴퓨팅에서 는 새로 생성된 파일에 대해 파일 권한을 설정하는 방법을 제어하는 마스크 설정을 결정하는 명령입니다.또한 파일 사용 권한이 명시적으로 변경되는 방식에도 영향을 미칠 수 있습니다. umask는 마스크를 설정하는 함수이기도 합니다.또는 공식적으로 파일모드 작성 마스크라고 불리는 마스크 자체를 참조할 수도 있습니다.마스크는 비트의 그룹화입니다.각 비트는 새로 생성된 파일에 대응하는 권한을 설정하는 방법을 제한합니다.마스크의 비트는, 를 호출합니다.umask명령어를 입력합니다.

개요

Unix 계열 시스템에서는 각 파일에는 읽기, 쓰기 또는 실행할 수 있는 사용자를 제어하는 속성 세트가 있습니다.프로그램이 파일을 만들 때 파일 권한은 마스크에 의해 제한됩니다.마스크에 비트가 "1"로 설정된 경우 해당 초기 파일 권한이 비활성화됩니다.마스크에서 "0"으로 설정된 비트는 해당 권한프로그램 및 파일 시스템에 의해 결정됨을 의미합니다.즉, 마스크는 파일이 생성될 때 권한을 삭제하는 마지막 단계 필터 역할을 합니다. "1"로 설정된 각 비트는 해당 권한을 제거합니다.사용 권한은 나중에 사용자 및 프로그램에 의해 변경될 수 있습니다.chmod.

각 프로그램(전문적으로 프로세스라고 함)에는 자체 마스크가 있으며 함수 호출을 사용하여 설정을 변경할 수 있습니다.프로세스가 일 경우 마스크는 다음과 같이 설정됩니다.umask명령어를 입력합니다.셸 또는 프로세스가 새 프로세스를 시작하면 하위 프로세스는 상위 프로세스에서 마스크를 상속합니다.일반적으로 마스크는 새 파일 생성 시 파일 권한에만 영향을 미치며 기존 파일에서 파일 권한이 변경되어도 영향을 주지 않습니다.단,chmodsymbolic 모드를 사용하여 모드옵션을 지정하고 사용자 클래스에 대한 참조가 지정되지 않은 경우 명령을 실행하면 마스크가 체크됩니다.

마스크는 비트 그룹으로 저장됩니다.바이너리, 8진수 또는 심볼릭 표기법으로 나타낼 수 있습니다.umask명령어를 사용하면 마스크를 8진수로 설정할 수 있습니다(예:0754또는 심볼릭(예:u=,g=w,o=wx) 표기법입니다.

umask명령어는 Unix와 같은 운영체제시스템에서 사용되며umask함수는 POSIX.1 사양에 정의되어 있습니다.

역사

마스크, 그umask명령어 및umask함수는 UNIX의 원래 구현의 일부가 아닙니다.operating system은 보안이 문제가 되지 않는 비교적 작은 컴퓨터 센터 환경에서 진화했습니다.그 결과, 다른 조직의 수백 명의 유저에게 서비스를 제공할 수 있게 되었습니다.처음에 개발자들은 특히 실제 보안 위반의 경우 주요 파일의 작성 모드를 더욱 제한적으로 설정했지만, 이는 일반적인 솔루션이 아니었습니다.마스크와umask명령어는 1978년경 운영체제 [1]제7판에 도입되어 사이트, 그룹 및 개인이 자신의 기본값을 선택할 수 있게 되었습니다.마스크는 Unix와 유사한 운영체제의 현대적 구현의 전부는 아니더라도 대부분 구현되어 있습니다.

셸 명령어

셸에서 마스크는 를 사용하여 설정됩니다.umask명령어를 입력합니다.이 명령어의 구문은 다음과 같습니다.[2]

umask [ - S ][ mask Expression ]

(괄호 안의 항목은 옵션입니다).

현재 마스크 표시

이 경우,umask명령어는 인수 없이 호출되며 현재 마스크가 표시됩니다.출력은 [3]OS에 따라 8진수 표기 또는 심볼 표기 중 하나입니다.

C 쉘이 아닌 대부분의 셸에서는-S인수(즉,umask -S)가 지시합니다.umask기호 표기법을 사용하여 표시합니다.예를 들어 다음과 같습니다.

$umask # 현재 표시(8진수로) 0022 $umask -S # 현재  표시 기호 u=rwx,g=syslog,o=syslog

8진 표기를 사용한 마스크 설정

이 경우,umask명령어는 octal 인수와 함께 호출되며 마스크의 비트를 해당 인수로 직접 설정합니다.

$umask 007 # 마스크를 007 $umask설정 # 마스크 표시 (8진수) 0007 # 0 - (u) 마스크 # 0의 ser/owner 부분 - (g) 마스크 # 7그룹 부분 - (o) 마스크 $umask - S #의 그룹/not-in-group 부분 - (o) 마스크 표시 ug= ugymask기호로 표시합니다.

4자리 미만이 입력된 경우 선행 제로가 가정됩니다.인수가 유효한 8진수가 아니거나 인수가 4자리를 [4]넘으면 오류가 발생합니다.오른쪽 끝의 3자리 8진수는 각각 "소유자", "그룹" 및 "기타" 사용자 클래스를 나타냅니다.네 번째 디짓이 존재하는 경우 맨 왼쪽(상위) 디짓은 setuid 비트, setgid 비트sticky 비트의 3가지 Atribute에 대응합니다.

옥탈 코드

8진수 단위
umask명령어
마스크가 사용할 권한
파일 작성 중 설정 금지
0 모든 권한을 설정할 수 있습니다(읽기, 쓰기, 실행).
1 실행 권한 설정이 금지되어 있습니다(읽기 및 쓰기).
2 쓰기 권한 설정이 금지됨(읽기 및 실행)
3 쓰기 및 실행 권한 설정은 금지됩니다(읽기 전용).
4 읽기 권한 설정이 금지됨(쓰기 및 실행)
5 읽기 및 실행 권한 설정이 금지됨(쓰기 전용)
6 읽기 및 쓰기 권한 설정은 금지됩니다(예: 읽기 및 쓰기 권한만).
7 모든 권한을 설정할 수 없습니다(권한 없음).

기호 표기법을 사용한 마스크 설정

언제umask는 심볼릭 표기를 사용하여 호출되며, 다음 구문을 사용하여 maskExpression에서 지정한 대로 플래그를 변경 또는 설정합니다.

[user-class-letters] 오퍼레이터 권한 제한

구문은 C 쉘을 사용하는 경우 빌트인의 동작이 다르기 때문에 기능하지 않습니다.umask명령어를 입력합니다.

여러 maskExpression은 쉼표로 구분됩니다.

공백이 maskExpression을 종료합니다.

권한은 다양한 사용자 클래스에 적용됩니다.

편지 학급 묘사
u 유저 주인
g 그룹. 파일 그룹의 구성원인 사용자
o 다른이들 파일의 소유자 또는 그룹의 구성원이 아닌 사용자
a 모든. 상기의 3가지 모두와 같다ugo(maskExpression에서 사용자 클래스 문자가 지정되지 않은 경우 기본값)

연산자는 마스크의 권한 모드를 조정하는 방법을 지정합니다.

교환입니다. 마스크에 미치는 영향
+ 지정된 사용 권한이 활성화되어 있으며 지정되지 않은 사용 권한은 변경되지 않습니다.
- 지정된 권한은 사용할 수 없으며 지정되지 않은 권한은 변경되지 않습니다.
= 지정된 권한이 활성화되어 있으며 지정되지 않은 권한은 활성화되지 않습니다.

permission-symbols는 마스크에 의해 허용 또는 금지되는 파일 권한 설정을 나타냅니다.

기호. 이름. 묘사
r 읽어주세요 파일을 읽거나 디렉토리의 내용을 나열하는
w 쓰다 파일 또는 디렉토리에 쓰다
x 실행하다 파일을 실행하거나 디렉터리 트리를 다시 검색합니다.
X 특별 집행 심볼릭 모드를 참조해 주세요.
s setuid/setuid 파일 권한을 참조하십시오.
t 끈적거리는 파일 권한을 참조하십시오.

예를 들어 다음과 같습니다.

u-mask u-w

사용자에 대한 쓰기 권한 설정을 금지합니다.마스크의 나머지 플래그는 변경되지 않습니다.

여러 변경의 예:

umask u-w,g=r,o+r

그러면 다음과 같이 마스크가 설정됩니다.

  1. 사용자에 대한 쓰기 권한 설정을 금지하고 나머지 플래그는 변경하지 않습니다.
  2. 그룹에 대한 읽기 권한을 활성화하고 그룹에 대한 쓰기 및 실행 권한을 금지합니다.
  3. 다른 플래그에 대해 읽기 권한을 사용하도록 허용하고 나머지 플래그를 변경하지 않습니다.

명령줄 예시

다음 예시는 더 많은 예를 제시하겠습니다.umask명령을 사용하여 마스크를 변경합니다.

umask명령어 발행 마스크가 이후 생성된 파일/디렉토리의 권한에 미치는 영향
umask a+r 모든 사용자 클래스에 대해 읽기 권한을 활성화할 수 있습니다.나머지 마스크비트는 변경되지 않습니다.
umask a-x 에서는 모든 사용자 클래스에 대해 실행 권한을 이노블로 할 수 없습니다.나머지 마스크비트는 변경되지 않습니다.
umask a+rw 는 모든 사용자 클래스에 대해 읽기 또는 쓰기 권한을 활성화할 수 있습니다.나머지 마스크비트는 변경되지 않습니다.
umask +rwx 를 사용하면 모든 사용자 클래스에 대해 읽기, 쓰기 또는 실행 권한을 활성화할 수 있습니다.(주의: 일부 UNIX 플랫폼에서는 마스크를 기본값으로 복원합니다.)
umask u=rw,go= 소유자에 대해 읽기 및 쓰기 권한을 사용하도록 허용하고 소유자에 대해 실행 권한을 사용하도록 금지합니다. 그룹 및 기타에 대한 사용 권한을 사용하도록 금지합니다.
umask u+w,go-w 소유자에 대해 쓰기 권한을 사용하도록 허용하고, 그룹 및 기타에 대해 쓰기 권한을 사용하도록 금지합니다.
umask -S 현재 마스크를 기호 표기로 표시하다
umask 777 모든 사용자에게 읽기, 쓰기 및 실행 권한을 허용하지 않습니다(소유자도 이 마스크로 만든 파일을 읽을 수 없으므로 유용하지 않습니다).
umask 000 모든 사용자에게 읽기, 쓰기 및 실행 권한 허용(보안 위험 최소화)
umask 077 파일 소유자에 대한 읽기, 쓰기 및 실행 권한은 허용하지만 다른 모든 사용자에 대한 읽기, 쓰기 및 실행 권한은 금지합니다.
umask 113 소유자 및 그룹에 대해 읽기 또는 쓰기 권한을 사용하도록 허용하지만 실행 권한은 허용하지 않습니다. 다른 사용자에게는 읽기 권한을 사용하도록 허용하지만 쓰기 또는 실행 권한은 허용하지 않습니다.
umask 0755 에 상당하는u-rwx,go=w. (the.0는, 특수 모드(setuid, setgid, sticky)를 netable로 하는 것을 지정합니다.

의 효과를 나타내는 예umask:

달러 umask -S)(자주 초기)설정을 보여 주는u=rwx,g=rx,o=rx달러 gcchello.c#컴파일하고 창조할 실행 파일 a.out달러ls -l a.out -rwxr-xr-x 1나 개발자 6010 7월 1017:10 a.out달러#umask 금지 써라 허가를 위해 그룹 국내달러 ls>listOfMyFiles#출력 파일 생성된 리디렉션 하지 않나 시도하였다. 로. 만불ls -l listOfMyFiles-r-1나 개발자달러#umask 금지 6010 7월 1017:14 listOfMyFiles -rw-r 국내 그룹에 대한 사용 권한을 써라 eXecute달러############################################################$umask u-w # 제거 사용자를 사용 권한에서 umask달러umask -S u=rx,g=rx,o=rx달러ls>protectedListOfFiles달러ls -l protecte.dListOfFiles -r--r--r--1 me developer 6010 7월 10일 17:15 protectedListOfFiles $rm protectedListOfFiles는 protectedListOfFiles의 r--r--r--m me/developer를 덮어씁니까?달러#그 protectedListOfFiles, Y에 대한 답 쓰기 가능하지 않다 경고달러#####################################################################################$umask g-r,o-r #을 그룹과 마스크달러umask -S에서 다른 읽기달러ls 을 u=rx,g=x,o=x, 읽secretListOfFiles달러ls -l secretListOfFiles -r----1나 개발자 60파일을 제거할 것이다.10 7월 10일 17:16 secret List Of Files

마스크 효과

마스크는 파일이 생성될 때마다 적용됩니다.마스크에 비트가 "1"로 설정되어 있으면 나중에 파일이 생성될 때 해당 파일 권한이 항상 비활성화됨을 의미합니다.마스크에서 "0"으로 설정된 비트는 나중에 파일이 생성될 때 요청 프로세스OS의해 대응하는 권한이 결정됨을 의미합니다.즉, 마스크는 파일이 생성될 때 권한을 삭제하는 마지막 단계 필터 역할을 합니다. "1"로 설정된 각 비트는 해당 파일에 대한 권한을 제거합니다.

마스크 적용 방법

의 디짓의 방법umask마스크에 명령어가 나타나고 최종적으로 full(예: full)로 파일을 작성하기 위한 프로그램의 요청에 영향을 줍니다.rwx) 권한
숫자를 입력하다
umask명령어
바이너리 입력
가면
부정
가면의
논리 AND
"rwx" 요청[5] 포함
0 000 111 rwx
1 001 110 rw-
2 010 101 r-x
3 011 100 r-
4 100 011 -wx
5 101 010 -w-
6 110 001 --x
7 111 000 ---

프로그래밍 방식으로 마스크는 먼저 마스크를 부정(완성)한 후 요청된 파일 모드로 논리적 AND를 실행함으로써 OS에 의해 적용됩니다.[6]기능을 설명하는 최초의 UNIX 매뉴얼에는 다음과 같이 기술되어 있습니다.

실제 모드...지정된 모드의 논리 파일 및 인수 보완 파일입니다.마스크의 하위 9비트(보호 비트)만 참여합니다.즉, 마스크는 파일이 생성될 때 꺼지는 비트를 표시합니다(표시합니다.

--

예외

많은 운영 체제에서는 실행 권한으로 파일을 생성할 수 없습니다.이러한 환경에서 새로 생성된 파일은 항상 모든 사용자에 대해 실행 권한을 사용하지 않도록 설정됩니다.

마스크는 일반적으로 새 파일을 만드는 기능에만 적용됩니다.단, 예외가 있습니다.예를 들어, UNIX 및 GNU 버전을 사용하는 경우chmod파일 권한을 설정하고 심볼 표기가 사용되며 사용자가 지정되지 않은 경우 요청된 권한에 마스크가 적용된 후 파일에 적용됩니다.예를 들어 다음과 같습니다.

$umask 0000 $ chmod +rwx filename $ ls - l filename - rwxrwx filename $ umask 0022 $ chmod +rwx filename $ ls - l filename - rwxr - x filename

과정

프로세스에는 자체 마스크가 있으며 이 마스크는 프로세스가 새 파일을 생성할 때마다 적용됩니다.셸 또는 다른 프로세스가 새로운 프로세스를 생성하면 자녀 프로세스는 부모 [7]프로세스에서 마스크를 상속합니다.프로세스가 일 경우 마스크는 에 의해 변경됩니다.umask명령어를 입력합니다.다른 프로세스와 마찬가지로 셸에서 시작된 프로세스는 셸의 마스크를 상속합니다.

마운트 옵션

Linux 커널에서는fat,hfs,hpfs,ntfs,그리고.udf 파일 시스템 드라이버는umask 마운트 옵션 - 디스크 정보가 사용 권한에 매핑되는 방법을 제어합니다.이는 위에서 설명한 프로세스별 마스크와 동일하지 않지만 사용 권한은 유사한 방식으로 계산됩니다.이러한 파일 시스템 드라이버 중 일부는 다음과 같은 마운트 옵션을 사용하여 파일 및 디렉터리에 대해 별도의 마스크를 지원합니다.fmask.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "UNIX 7th Edition Manual, Bell Labs UNIX". Manual. AT&T Laboratories. Retrieved 2019-05-14.
  2. ^ Olczak, Anatole (2019-06-09). "Korn Shell: Unix and Linux Programming Manual". Oreilly. Addison-Wesley Professional. Retrieved 2013-01-14.
  3. ^ "umask", The Single UNIX Specification, Version 2 (manual), The Open Group, 1997, retrieved 2013-01-14
  4. ^ 주의: 일부 프로그래밍 언어에서는 숫자 0이나 문자 o 또는 q와 같은 8진수 표기 앞에 접두사 기호가 필요합니다.umask명령어에서는 이런 유형의 프리픽스 표기는 사용하지 않고 8진수만 사용됩니다.
  5. ^ 주의: 일반적으로 운영체제는 새로 생성된 파일에 대한 실행 권한도 제거합니다.
  6. ^ "UNIX 8th Edition Manual, Bell Labs UNIX". Manual. AT&T Laboratories. Retrieved 2013-01-14.
  7. ^ "umask(2)", Linux Programmer's Manual release 3.32 (manual), Linux man-pages project, 9 January 2008, retrieved 2013-01-01