umask
*nix 운영 체제에서 명령의 실제 용도는 무엇입니까?
어떻게 작동하며 어떤 용도로 사용되나요? 예를 들어
$ umask 022
전에는 정말 고마워요
답변1
umask
대부분의 쉘에 내장된 명령이며 시스템 호출에 대한 인터페이스일 뿐입니다. 이에 대한 umask()
설명은 쉘 문서에서 찾을 수 있습니다( 시스템 호출 문서 또는 쉘 내장 명령 문서를 man umask
가리킬 수 있음 에 유의하세요) 당신 외에).umask()
umask
사용자 마스크는 파일이 생성될 때 기본적으로 파일에 자동으로 부여되는 권한을 결정하는 프로세스(상위 프로세스에서 하위 프로세스로 상속되고 명령 실행 전반에 걸쳐 유지됨)의 속성입니다.
이 umask
유틸리티를 사용하면 쉘 프로세스의 사용자 마스크를 설정하여 쉘 세션에서 실행되는 명령으로 생성된 파일에 대한 권한을 제어할 수 있습니다.
모든 쉘은 umask
마스크를 8진수로 처리하는 반면 일부 쉘(모든 POSIX 쉘 포함)에서는 for 와 같이 기호로 지정할 수도 있습니다 chmod
.
마스크는 권한의 어느 비트가 되어야 하는지를 결정합니다.분명한파일이 생성될 때. 예를 들어 0777이 511이거나 0b111_111_111인 경우 모든 91비트 Unix 파일 권한(3( 읽기, 쓰기, 실행 )) umask 777
때문에 권한 없이 파일이 생성됩니다.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
A umask 077
또는 umask u=rwx,g=,o=
귀하가 생성한 모든 파일이 귀하의 비공개인지 확인하십시오(다른 사람이 해당 파일에 액세스할 수 없음). 임시 파일을 생성하는 스크립트에서 종종 다음과 같이 하위 쉘에서 이를 볼 수 있습니다.
(umask 077; echo test > "$tmpfile")
umask
서버 비트를 설정하면 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()