권한을 더 잘 이해하려고 노력하고 있으므로 "운동"을하고 있습니다. 다음은 각각의 출력과 함께 사용하는 일련의 명령입니다.
$ umask
0022
$ touch file1
$ ls -l file1
-rw-r--r-- 1 user group 0 Mar 16 12:55 file1
$ mkdir dir1
$ ls -ld dir1
drwxr-xr-x 2 user group 4096 Mar 16 12:55 dir1
기본 파일 권한은 666
( rw-rw-rw-
)이고 디렉토리 기본 권한은 777
( rwxrwxrwx
) 이라는 것을 알고 있기 때문에 의미 가 있습니다. 이 기본 권한에서 umask 값을 빼면
666-022=644
, rw-r--r--
에 대해 file1
이전 출력과 일관성이 있습니다.
777-022=755
, rwx-r-x-r-x
상기에 대해 dir1
, 또한 응집성.
그러나 umask를 022
으로 바꾸면 021
더 이상 없습니다.
파일의 예는 다음과 같습니다.
$ umask 0021
$ touch file2
$ ls -l file2
-rw-r--rw- user group 0 Mar 16 13:33 file2
-rw-r--rw-
이다 646
그러나해야한다 666-021=645
. 따라서 이전 계산에 따라 작동하지 않습니다.
디렉토리의 예는 다음과 같습니다.
$ touch dir2
$ ls -ld dir2
drwxr-xrw- 2 user group 4096 Mar 16 13:35 dir2
drwxr-xrw-
이다 756
, 777-021=756
. 따라서이 경우 결과는 이전 계산과 일관됩니다.
나는 그 남자를 읽었지만이 행동에 대해 아무것도 찾지 못했습니다.
누군가 이유를 설명 할 수 있습니까?
설명
답변에서 지적한 바와 같이 : umask
의 값은 기본 디렉토리 및 파일의 권한에서 수학적으로 빼지 않습니다 .
효과적으로 관련된 연산은 AND (&) 및 NOT (!) 부울 연산자의 조합입니다. 주어진:
R = 결과 권한
D = 기본 권한
U = 현재 umask
R = D &! U
예를 들면 다음과 같습니다.
666 &! 0053 = 110110110 및 ! 000 101 011 110110110 및 111010100 = 110 010 100 = 624 = rw--wr--
777 &! 0022 = 111111111 및 ! 000 010 010 111 111 111 및 111 101 101 = 111101101 = 755 = rwxr--xr-x
팁
결과 권한을 신속하게 알 수있는 쉬운 방법 (최소한 도움이 되었음)은 소수점 이하 세 자리 만 사용할 수 있다고 생각하는 것입니다.
r = 100 = 4
w = 010 = 2
x = 001 = 1
권한은이 3 가지 값의 조합입니다.
" "
상대 권한이 부여되지 않았 음을 나타내는 데 사용됩니다.
666 = 4+2+" " 4+2+" " 4+2+" " = rw rw rw
따라서 현재 umask가 0053
내가 알고 있다면 (4+1)
그룹에서 읽기 및 실행 권한을 제거하고 (2+1)
다른 결과에서 쓰기 및 실행
4+2 " "+2+" " 4+" "+" " = 624 = rw--w-r--
(그룹 및 기타는 이미 실행 권한이 없었습니다)