저는 리눅스를 처음 접했습니다. 몇 가지 명령어를 연습해 봤습니다. 내 질문은 언제 다른 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
.