umask가 내가 만든 디렉터리와 파일에 대해 다른 권한을 설정하는 이유는 무엇입니까?
[user@server1 ~]$ umask
0770
[user@server1 ~]$ mkdir TEST2; touch TEST2.txt;
[user@server1 ~]$ ls -l
d------rwx 2 user group_name 4096 Mar 5 05:16 TEST2
-------rw- 1 user group_name 0 Mar 5 05:16 TEST2.txt
이제 파일에 권한이 설정되어서는 안 됩니까 TEST2.txt
?007
umask
0770
답변1
umask는 권리를 강요하지 않고 금지합니다. strace를 살펴보십시오.
file:
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
directory:
mkdir("newdir", 0777) = 0
touch는 파일에 대한 실행 권한을 요청하지 않습니다(말도 안 됨).
답변2
값 umask
은 권한입니다.부정적인, 기본적으로 부여된 모든 권한을 취소합니다. 디렉터리에는 검색 권한이 필요하므로 덮어쓰지 않는 한 해당 권한은 0777(rwxrwxrwx)이고 일반적인 umask는 0002이며 0775(rwxrwxr-x)가 남습니다. 실행 파일의 경우에도 마찬가지입니다(x는 여기서 실행을 의미함). 일반 파일의 경우 기본 권한은 위의 실행 불가능, rw-rw-rw-(0666) 및 umask 0664(rwxrwxr--)입니다.
답변3
umask는 기본적으로 기본 권한 값에 대한 보충 값입니다. 따라서 umask에 002가 표시되면 기본 권한이 775라는 의미입니다. 더 나은 이해를 위해 다른 예로는 umask=000 => perms=777 또는 umask=777 => perms=000 이 있습니다.