umask
*nix OS에서 실제로 명령은 무엇입니까 ?
작동 메커니즘과 유용성은 어떻습니까? 예를 들어
$ umask 022
훨씬 전에 고마워요
답변1
umask
시스템 호출 에 대한 인터페이스일 뿐인 대부분의 쉘에 내장된 명령이며 umask()
해당 설명은 쉘 문서에서 찾을 수 있습니다 man umask
. 당신 이외의 것).umask()
umask
사용자 마스크는 생성 시 기본적으로 파일에 자동으로 부여되는 권한을 결정하는 프로세스(상위에서 하위로 상속되고 명령 실행 시 보존됨)의 속성입니다.
이 umask
유틸리티를 사용하면 셸 프로세스의 사용자 마스크를 설정하여 셸 세션 내에서 실행되는 모든 명령으로 생성된 파일의 권한을 제어할 수 있습니다.
모든 쉘의 는 umask
마스크를 8진수로 사용하는 반면 모든 POSIX 쉘을 포함한 일부 쉘에서는 for와 같은 기호 형식으로 지정할 수도 있습니다 chmod
.
마스크는 권한의 어느 비트가 허용되어야 하는지를 결정합니다.삭제됨파일이 생성될 때. 예를 들어 , 0777이 511이거나 0b111_111_111인 경우 Unix 파일 권한(3( 읽기, 쓰기, e 실행)) umask 777
의 모든 91 비트처럼 권한 없이 파일이 생성됩니다.r
w
x
사용자, 3개그룹, 3개다른)이 삭제됩니다.
기호 형식은 어떤 비트가~ 아니다삭제됩니다. 그럴 umask 777
것입니다 umask u=,g=,o=
.
일반적으로 생성한 파일이 누구나 쓰기 가능하도록( 또는 ) 원하지 않기 때문에 적어도 umask w
에 해당 비트가 포함되기를 원합니다.o
umask 002
umask u=rwx,g=rwx,o=rx
최소한 사용자의 기본 그룹이 개인 그룹이 아닌(다른 사용자와 공유되는) 시스템에서는 그룹 w
에 대한 비트 도 설정되기를 원할 것 입니다 .g
umask 022
umask u=rwx,g=rx,o=rx
umask 077
또는 은 umask u=rwx,g=,o=
귀하가 생성한 모든 파일이 귀하에게만 공개되도록 보장합니다(다른 사람이 액세스할 수 없음). 임시 파일을 생성하는 스크립트에서 종종 다음과 같이 하위 쉘에서 볼 수 있습니다.
(umask 077; echo test > "$tmpfile")
umask
ser 에 대한 비트를 설정하면 u
열 수 없는 파일이 생성될 수 있으므로 문제가 발생할 수 있습니다.
사용자 마스크가 적용되었습니다.위에open()
응용 프로그램 이나 creat()
파일이 요청된 권한 중 하나입니다 . ( ) 인 creat("file", 0666)
동안 그렇게 하면 권한은 결국 ( ) 이 됩니다 . 애플리케이션은 이후 에 원하는 대로 권한을 변경하기 위해 호출할 수 있습니다 (그리고 umask는 거기에 아무런 영향을 미치지 않습니다).umask
022
u=rwx,g=rx,o=rx
0644
u=rw,g=r,o=r
fchmod()
chmod()
umask
인수가 없으면 현재 사용자 마스크를 8진수 형식으로 보고합니다. umask -S
일부 쉘에서는 이를 기호 형식으로 보고합니다. 일단 해석되면 동일한 사용자 마스크를 설정하는 쉘 코드를 umask -p
입력 bash
하거나 출력합니다.fish
이는 수정한 후 이전 umask를 복원하는 데 사용할 수 있습니다.
previous_umask=$(umask)
umask 077
# create some private files
umask "$previous_umask"
1 기술적으로 12비트의 권한이 있으며, 3개의 추가 비트는 파일 유형에 따라 다양한 목적으로 사용되는 특수 비트이며 때로는 다른 권한 비트(예: 실행 파일용 setuid, setgid 비트, t
디렉터리용 비트)와 결합됩니다. .). 일부 시스템에서는 해당 비트가 open()
/ 에서 요청될 때 무시 creat()
되고 어쨌든 응용 프로그램에 의해 설정될 때(일반적으로 chmod()
이후를 통해) 그럴 만한 이유가 있으므로 해당 비트를 에 포함시키는 것은 일반적으로 유용하지 않으며 umask
시스템 umask()
호출은 이를 무시합니다. 그래도.