chmod -u는 무엇을합니까? 모든 권한을 제거하는 것이 아니라

우연히 나는 실행 chmod -u filename했고 내가 가진 모든 권한을 제거했습니다 filename.

매뉴얼 페이지는 -u옵션을 참조하지 않습니다 . 실험 나는 모든 권한을 제거하는 것이 아니라 액세스를 읽고 실행하여 쓰기 액세스를 그대로 둔다는 결론을 내릴 수있었습니다.

이것이 정확히 무엇을 하는가?


위의 결론이 잘못되었습니다. 이제 그것이하는 일은 소유자가 가진 모든 권한을 모든 카테고리에서 제거하는 것이라고 생각합니다.


나는 행동이 유사하다 생각 a=u만은, -대신 =하고 a, 예를 들어, 그냥 함께 할 수있는 삭제할 수 있습니다 a+x.



답변

이것은 옵션이 아니라 권한을 지정하는 표준 (흔하지는 않지만) 방법입니다. 그것은 (제거하는 것을 의미합니다 -파일 소유자 (와 관련된) 권한을 u모든 사용자 (NO 이전을 위해,) u, g또는 o). 이것은 되는 매뉴얼 페이지에 설명.

GNU chmod의 매뉴얼 페이지는 이것을 다음과 같이 설명합니다 :

기호 모드의 형식은입니다 [ugoa...][[-+=][perms...]...]. 여기서 perms세트에서 0 개 이상의 문자 rwxXst또는 세트 ugo 에서 하나의 문자

그리고 나중에

이러한 문자 중 하나 이상을 대신하여 파일을 소유 한 사용자에게 u부여 된 권한 ( ), 파일 그룹의 구성원 인 다른 사용자에게 부여 된 권한 g, 및 위의 두 범주에 속하지 않은 사용자에게 부여 된 권한 ( o)

따라서 모든 사용자에 대해 현재 소유자 ( )에 대해 사용 가능한 모든 권한 -u을 제거 ( -)하는 것을 의미합니다 ( 현재 umask를 존중하는 것을 제외하고는). 그다지 유용하지는 않지만 , 예를 들어 재귀 적으로 작업 할 때 소유자의 권한을 다른 사람에게 복사하는 것이 종종 유사 합니다.ua-uchmod +u


또한 POSIX에 문서화되어 있지만 더 명확하게 정의되어 있지 않습니다. 권한 사양이 광범위하게 who[+-=]perms(또는 다수) 있으며, 그 영향이 추가로 지정됩니다.

permcopy 심볼 u, go각각의 파일 모드 비트의 사용자, 그룹과 관련된 현재 권한, 다른 부분을 표현한다. 이 섹션의 나머지 부분은 perm비 터미널 permpermcopy문법을 참조하십시오.

그리고

-

누가 지정하지 않으면 호출 프로세스의 파일 모드 작성 마스크에 해당 비트가있는 것을 제외하고 소유자, 그룹 및 기타 권한에 대해 perm으로 표시되는 파일 모드 비트가 지워집니다.


답변

대답은 /unix//a/429424/255251 과 약간 비슷합니다 .

chmod -u file_name

모든 권한을 제거하지는 않지만 umask가치를 고려 합니다.

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

이제 umask 값을 변경하십시오.

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file