현재 파일 권한은 다음과 같습니다:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
이제 다음을 사용하여 쓰기 권한을 부여하려고 합니다 chmod
.
$ chmod +x+r+w file
그 후에도 파일 권한은 여전히 다음과 같습니다.
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
다른 사람에게는 쓰기 권한이 부여되지 않습니다. 왜 이런 일이 발생합니까?
답변1
당신이 실행할 때 chmod +x+r+w file
,마스크한 비트를 제외한 모든 비트가 설정되었습니다.umask
. 아마도 umask
(적어도) 다른 사용자의 쓰기 비트를 마스킹하여 해당 +w
부분을 무시하게 될 것입니다.
따라서 일반적인 umask
022 의 경우 chmod
누구에게 권한을 설정해야 하는지 지정하지 않는 명령은 결국 해당 그룹과 다른 모든 사람의 쓰기 비트에 대해 지정된 변경 사항을 무시하게 됩니다.
모든 비트를 설정하고 무시하려면 다음을 umask
지정해야 합니다.WHO다음과 같이 설정하고 싶습니다.
chmod a+rwx file
아니면 좀 더 구체적으로 말하면,
chmod ugo+rwx file
(또는 ugo
사용자, 그룹 및/또는 기타를 위한 적절한 하위 집합).
기호 권한 대신 숫자 권한을 지정할 수도 있습니다.UNIX 권한 및 파일 유형 이해더 알아보기.
차단 동작 은 umask
다음에도 적용됩니다.변제비트, 이는 놀라운 결과를 가져올 수 있습니다. chmod -w file
!로 설정된 쓰기 비트만 지워집니다. chmod +w file
일반적인 umask
022를 계속하면 이는 chmod -w
이 그룹이나 다른 그룹에 대한 쓰기 비트는 건드리지 않고 이미 존재하는 경우에는 그대로 남겨진다는 것을 의미합니다. (GNU는 coreutils
이에 대해 chmod
유용한 경고를 제공합니다 .)