umask 값을 기반으로 파일 및 디렉터리 권한 표시

umask 값을 기반으로 파일 및 디렉터리 권한 표시

기본 파일 및 디렉터리 권한을 설정하기 위해 umask 값을 사용하는 방법에 대한 홈 페이지가 있지만 다음과 같은 문제가 발생합니다.

umask = 0541이 있는 경우

  • 0666 - 0541 = 0125, 파일 권한:---x-w-r-x
  • 0777 - 0541 = 0236, 디렉토리 권한:d-w--wxrw-

그러나 Linux 터미널의 실제 결과는 다음과 같습니다.

  • d-w--wxrw디렉토리용
  • --w--w-rw-파일에 대해 설명해주세요!

답변1

umask는 빼기가 아니라 umask를 기반으로 한 논리적 AND 연산이라는 점에 유의하세요.

바이너리 권한을 고려하세요.

따라서 0666의 라이센스는 다음과 같습니다.

110 110 110

이제 umask 0541은

101 100 001

결과를 계산하기 위해 umask를 무효화합니다.

010 011 110

그런 다음 허가를 받아 AND 연산을 수행합니다.

그래서

110 110 110  AND
010 011 110
=== === ===
010 010 110

이는 -w- -w- rw-에 매핑됩니다.

답변2

이렇게 생각해보세요. 기본 권한 666이 있으면 r+w사용자, 그룹 및 기타 사용자에 대한 권한만 있고 umask를 통해 541r+x,r,x 권한을 제거하려는 경우입니다.

사용자의 경우:

By default you can read+write and by umask you want to remove read+executable 
permissions, but it will never happen because initially file has no executable 
permissions. So only read permission will be removed.

그룹의 경우:

read permission will removed

다른 사람들을 위해:

There is no executable permission in the file, so there will be no change.

디렉터리에도 동일한 개념이 적용됩니다.

관련 정보