umask 0022의 선행 0

umask 0022의 선행 0

umask 0022에서 선행 0을 변경하는 방법은 무엇입니까? 변경될 수 있나요?

나는 일반적인 방법으로 정보를 검색했지만 내 로컬 시스템은 거의 도움이 되지 않았습니다.

$ man umask  
No manual entry for umask  

$ umask --help
bash: umask: --: invalid option
umask: usage: umask [-p] [-S] [mode]

내가 하나 찾았어온라인 umask 매뉴얼 페이지다음과 같은 내용이 있습니다:

umask [-p] [-S] [모드]

모드 ... 파일 생성 마스크
-S ........ 기호 형식으로 마스크를 인쇄합니다.
-p ........ 입력으로 재사용할 수 있는 형식으로 출력합니다.

이를 바탕으로 몇 가지 기본 명령을 시도했습니다 umask.

$ umask
0022

$ umask -p
umask 0022

$ umask -S
u=rwx,g=rx,o=rx

sudo로 umask를 실행할 수 없다는 사실에 놀랐습니다.

$ sudo umask  
[sudo] password :  
sudo: umask: command not found  

일반 umask를 다음과 같이 변경했습니다.

$ umask 021
$ umask
0021

$ umask 0022
$ umask
0022  

마지막으로 앞에 오는 0을 변경하려고 하면 오류가 발생합니다.

$ umask 1022
-sh: umask: 1022: octal number out of range  

그러면 원래 질문으로 돌아가서 선행 0(0)을 어떻게 변경합니까? 슈퍼유저(루트)인가요? 업데이트할 수 있나요? 그렇다면 무엇을 업데이트해야 합니까?

비슷한 질문을 검토했습니다.Linux에서 umask는 어떻게 계산됩니까?발견 :

첫 번째 것을 발견하기 위해 무엇을 사용할지는 모르겠지만 umask기술적으로는...

그리고

umask기본적으로 이러한 추가 비트를 활성화할 수 있는 설정을 실제로 설정할 수 있다고 생각하지 않습니다.

그러므로 이러한 불확실하고 모순되는 진술은 질문에 대한 답이 아닙니다.

답변1

C나 Perl과 같은 언어에서는 앞에 오는 0이 8진수를 나타내며 파일 권한 비트는 대개 8진수로 표시되므로 이러한 언어에서는 숫자가 10진수로 처리되지 않도록 0을 사용해야 합니다.

쉘 유틸리티는 항상 숫자 권한을 8진수로 해석하므로 0은 숫자를 C 스타일 8진수 상수처럼 보이게 하거나 채우는 것 외에는 의미가 없습니다.

umask에서는 가장 낮은 3개의 8진수만 의미가 있으므로 0022모든 숫자를 동일한 길이로 채우고 8진수를 나타내기 위해 앞에 0을 계속 두지 않는 한 이와 같은 추가 0은 약간 중복된 것처럼 보입니다.

(POSIX는 umask()권한 비트만 사용되지만 동시에 다른 비트의 의미는 구현에 따라 정의된다는 점을 다소 혼란스럽게 나타냅니다.)

관련 정보