"mkdir -pm 764 a/b/c"를 사용하여 생성된 중간 폴더에 대한 권한에 대해

"mkdir -pm 764 a/b/c"를 사용하여 생성된 중간 폴더에 대한 권한에 대해

사용 중일 때는 764 권한 mkdir -pm 764 a/b/c 만 얻었고 기본 권한이 있습니다 . 왜 그럴까? 모든 디렉토리에 764 권한이 부여되지 않는 이유는 무엇입니까?cab

답변1

유틸리티 mkdir는 단일 디렉터리를 생성합니다. 이 옵션을 사용하면 -m디렉터리가 생성되고 chmod주어진 권한으로 해당 디렉터리에서 효과적으로 실행됩니다(그러나 이는 두 단계로 발생하지 않으며 일부 상황에서는 중요할 수 있음).

을 사용하면 -p아직 존재하지 않는 중간 디렉터리가 생성됩니다. 주어진 모드는 -m여전히 경로 이름의 성에만 적용됩니다. 왜냐하면 이것이 여러분이 생성하려는 디렉토리이기 때문입니다(중간 디렉토리는 주어진 모드로 해당 디렉토리를 생성할 수 있도록 생성됩니다).

그만큼POSIX 표준mkdir각 중간 디렉토리는 쉘의 umask 값이 있는 (S_IWUSR|S_IXUSR|~filemask)&0777모드 로 생성되어야 한다고 가정합니다 .filemask

"애플리케이션 사용" 섹션에는 다음과 같이 나와 있습니다.

[...] 에 의해 생성된 중간 경로 이름 구성 요소의 경우 모드는 파일 모드 생성 마스크에 관계없이 항상 하위 디렉터리가 생성될 수 있도록 에 mkdir의해 수정된 기본값입니다 . u+ wx중간 디렉토리에 대해 다른 최종 권한이 필요한 경우 나중에 를 사용하여 변경할 수 있습니다 chmod.

이는 잠재적으로 사용자 쓰기 또는 실행 권한이 없는 디렉터리를 생성할 수 있도록 중간 디렉터리에 대한 모드가 설정되어 있음을 의미합니다. 중간 디렉터리에도 실행 및/또는 쓰기 권한이 부여되지 않은 경우 디렉터리 경로의 마지막 구성 요소를 생성할 수 없습니다.

특정 경우에는 다음을 사용하십시오.

mkdir -p -m 764 a/b/c
chmod 764 a/b
chmod 764 a

이전에 디렉토리가 전혀 존재하지 않았다는 것을 확실히 알고 있다면 다음을 사용하십시오.

mkdir -p -m 764 a/b/c
chmod -R 764 a

관련 정보