umask 명령이란 무엇입니까?

umask 명령이란 무엇입니까?

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 비트처럼 권한 없이 파일이 생성됩니다.rwx사용자, 3개그룹, 3개다른)이 삭제됩니다.

기호 형식은 어떤 비트가~ 아니다삭제됩니다. 그럴 umask 777것입니다 umask u=,g=,o=.

일반적으로 생성한 파일이 누구나 쓰기 가능하도록( 또는 ) 원하지 않기 때문에 적어도 umask w에 해당 비트가 포함되기를 원합니다.oumask 002umask u=rwx,g=rwx,o=rx

최소한 사용자의 기본 그룹이 개인 그룹이 아닌(다른 사용자와 공유되는) 시스템에서는 그룹 w에 대한 비트 도 설정되기를 원할 것 입니다 .gumask 022umask u=rwx,g=rx,o=rx

umask 077또는 은 umask u=rwx,g=,o=귀하가 생성한 모든 파일이 귀하에게만 공개되도록 보장합니다(다른 사람이 액세스할 수 없음). 임시 파일을 생성하는 스크립트에서 종종 다음과 같이 하위 쉘에서 볼 수 있습니다.

(umask 077; echo test > "$tmpfile")

umaskser 에 대한 비트를 설정하면 u열 수 없는 파일이 생성될 수 있으므로 문제가 발생할 수 있습니다.

사용자 마스크가 적용되었습니다.위에open()응용 프로그램 이나 creat()파일이 요청된 권한 중 하나입니다 . ( ) 인 creat("file", 0666)동안 그렇게 하면 권한은 결국 ( ) 이 됩니다 . 애플리케이션은 이후 에 원하는 대로 권한을 변경하기 위해 호출할 수 있습니다 (그리고 umask는 거기에 아무런 영향을 미치지 않습니다).umask022u=rwx,g=rx,o=rx0644u=rw,g=r,o=rfchmod()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()호출은 이를 무시합니다. 그래도.

관련 정보