Linux에서 umask는 어떻게 계산됩니까?


15

따라서이 umask형식을 사용하여 권한있는 사용자를 제한 할 수 있다는 것을 알고 있습니다 umask ugo.

read = 4, write = 2 및 exec = 1이라는 것을 알고 있습니다. 그러나을 입력 umask하면 0022또는 숫자 인 4 자리를 반환합니다 0073. 여분의 숫자가 있기 때문에 지금 어떻게 작동하는지 이해하지 못합니다. 그 여분의 숫자는 무엇이며 무엇을 0022의미합니까?

답변:


18

기본 마스크를 0666으로 가정합니다. umask0022는 새 마스크를 0644 (0666-0022 = 0644)로 만들어 그룹 및 다른 사람들이 읽기 (쓰기 또는 실행 권한 없음) 권한을 갖도록합니다.

"추가"숫자 (첫 번째 숫자 = 0)는 특수 모드가 없음을 지정합니다.

모드가 숫자로 시작하면 8 진수로 해석되고 그렇지 않으면 기호를 의미합니다.

0은 1 (스티커 비트의 경우) 또는 6 (SGID의 경우) 인 숫자입니다. 사용자 및 그룹에 읽기 및 쓰기 권한을 추가하는 위치 chmod와 같은 다른 방법 으로 명령을 호출 할 수 있습니다 chmod ug+rw mydir. 이 경우 (ug + rw) 모드는 숫자로 시작하지 않으므로 8 진수로 해석되는 것이 아니라 기호로 해석됩니다.

특수 모드에 대한 내용은 www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/ 와 기호에 대해서는 en.wikipedia.org/wiki/Chmod#Symbolic_examples 를 참조하십시오 .

나는 당신이 첫 비트를 마스크 해제한다는 것을 umask모르지만 기술적으로는 가능합니다. 거의 항상 0으로 보는 이유를 설명합니다.

pinkfloydx33의 신용

마스크의 첫 번째 숫자는 소유자 / 그룹 / 다른 모델에 잘 맞지 않는 특수 권한을 처리합니다. 파일 권한에 네 자리 숫자가 제공되면 첫 번째 숫자는 해당 특수 값을 나타냅니다.

4000 = SUID
2000 = SGID
1000 = sticky bit

set-user-ID의 약자 인 SUID 비트는 실행 프로그램이 소유자의 유효 사용자 ID (uid)로 실행되도록합니다. 즉, 누가 실행하더라도 프로그램은 소유자의 권한으로 실행됩니다. 루트 권한이 필요한 작업을 수행하지만 일반 사용자가 실행해야하는 프로그램에서 흔히 볼 수 있습니다 passwd.

set-group-ID의 약자 인 SGID 비트는 매우 유사하지만 소유자 의 유효 그룹 ID (gid)로 실행됩니다 .

스티커 비트는 조금 더 복잡합니다. 더 많은 정보를 원하면에 대한 맨 페이지를 읽으십시오 sticky.

이 비트는 디렉토리와 함께 사용할 수도 있지만 그 의미는 변경됩니다.

umask기본적으로 이러한 추가 비트를 활성화 할 수 있도록를 설정할 수 있다고는 생각하지 않지만 어쨌든 그렇게하고 싶지는 않을 것입니다.

에 신용 user470379


1
실제로 마지막 3 자리 이외의 0이 아닌 값을 제공 할 수 없습니다. Posix에 따르면 : "파일 권한 비트 이외의 파일 모드 비트를 지정하는 모드 값의 해석은 지정되지 않았습니다." man 2 umask(해당 시스템 호출) 에 따르면 "파일 권한 비트 만 mask사용됩니다". 이어 bash, umask에 1000에서 오류가 발생하는 경우를 "범위 밖의 8 진수". 그렇다면 왜 여분의 0입니까? 숫자가 8 진수임을 보여주기 위해서 일뿐입니다.
rici

그 pastebin에는 umask에 대한 참조가 없으므로 그것이 어떻게 관련되어 있는지 알 수 없습니다. chmod를 사용하면 처음 3 비트를 설정할 수 있지만 umask에서는 마스킹 할 수 없습니다. (즉, 당신도 쓸 수있었습니다 chmod 6777 dropbox. 그리고 chmod ug+s
덧붙여서

그래, 네 말이 맞아, 내가 무슨 생각을했는지 몰라
Braiam

@Braiam : 새로운 마스크를 계산하는 수식에 그것이 잘못 아니에요입니다 0666-0022, 그건 0666 & ~0022.
cuonglm

1
나는 이의가 숫자를 쓰는 방식이 아니라 비트 및 (&) 대신 빼기 연산자 (-)를 사용한다고 생각합니다.
BowlOfRed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.