umask가 실행 비트를 설정하지 않는 이유는 무엇입니까? [복사]

umask가 실행 비트를 설정하지 않는 이유는 무엇입니까? [복사]

저는 리눅스를 처음 접했습니다. 몇 가지 명령어를 연습해 봤습니다. 내 질문은 언제 다른 umask를 사용하여 다른 파일을 생성하는지에 관한 것입니다. 예를 들어:

umask 222내가 이해한 바에 따르면 777 - 222 = 555와 동일하므로 새 파일("새로운 파일"), 그 다음에새로운 파일권한은 다음과 같아야 합니다 r-xr-x-r-x(아니면 제가 틀렸나요?).

어느:"새로운 파일"권한을 사용하여 생성됩니다 r--r--r--.

umask가치 /etc/profile는 다음과 같습니다

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

내 uid는 1002입니다.

참고: 기록을 위해 모든 umask 질문과 문서를 읽었 man지만 아직 알아낼 ​​수 없습니다.

답변1

대부분의 프로그램은 실행 비트 세트( 0666== -rw-rw-rw-) 없이 파일을 생성합니다. 실행 비트는 실행 파일을 설치하는 동안 컴파일러에 의해서만 설정되거나 사용자가 수동으로 설정합니다.

그런 다음 umask를 적용하여 실제 권한을 확인합니다.

create    0666 rw-rw-rw-
umask     0222 r-xr-xr-x
effective 0444 r--r--r--

실제로는 뺄셈이 아니라 2의 보수의 비트 AND입니다.

따라서 0777- 0222= 가 필요하며 0555,

  OCTAL  BINARY       HUMAN-READABLE
  0666   0110110110  -rw-rw-rw-
& 0555   0101101101  -r-xr-xr-x
  0444   0100100100  -r--r--r--

당신은 또한 볼 수 있습니다ACL 동작을 설명할 수 없습니다.

답변2

Wiki에 좋은 설명이 있습니다.마스크. 비트 0은 생성 프로세스에서 지정한 모든 작업이 진행됨을 의미하고, 1은 발생하지 않음을 의미합니다.

따라서 "222"는 사용자, 그룹 및 기타 사용자에 대한 쓰기 권한을 무시하지만 읽기 및 실행 비트는 유지한다는 의미입니다.

귀하의 예에서 생성된 새 파일에는 실행 비트가 설정되어 있지 않습니다(일반적으로 새 파일을 생성할 때 실행 파일로 만들지 않음). r--r--r--이것이 r-xr-xr-x.

관련 정보