`mkdir -pm`이 내가 요청한 권한을 설정하지 않는 이유는 무엇입니까?

`mkdir -pm`이 내가 요청한 권한을 설정하지 않는 이유는 무엇입니까?

다음 명령을 사용하여 일부 디렉토리를 만들었습니다.mkdir -pm 700 /tmp/a/b/c

제가 요청한 권한 이 아닌 다른 /tmp/a권한이 있다는 사실에 놀랐습니다 .775700

mkdir지정된 패턴을 마지막으로 생성된 디렉터리에만 적용하고 상위 디렉터리는 무시하는 이유가 있나요 ?

답변1

이는 POSIX에서 필요합니다.기준을 위한 mkdir:

옵션 의 경우 -p:

누락된 중간 경로 이름 구성 요소를 만듭니다.

다음은:

그런 다음 다음 매개변수를 사용하여 chmod() 함수를 호출합니다.

  1. mkdir() 호출과 동일한 경로 매개변수
  2. 모드 매개변수 값 (S_IWUSR|S_IXUSR|~filemask)&0777. 여기서 filemask는 프로세스의 파일 모드 생성 마스크입니다.

이는 chmod경로의 마지막 디렉터리에서만 실행된다는 의미입니다.

관련 정보