Por que o 'mkdir -pm' não configurou as permissões que solicitei?

4

Eu criei alguns diretórios com o comando mkdir -pm 700 /tmp/a/b/c

Fiquei surpreso ao descobrir que /tmp/a tinha permissões 775 em vez de 700 , eu havia solicitado.

Existe alguma razão para o mkdir aplicar apenas o modo especificado ao último diretório criado e ignorá-lo para os diretórios pai?

    
por kasperd 10.08.2014 / 21:50

1 resposta

5

Isso é exigido pelo padrão do POSIX para mkdir :

Para a opção -p :

Create any missing intermediate pathname components.

seguido por:

and then calling the chmod() function with the following arguments:

  1. The same path argument as in the mkdir() call
  2. The value (S_IWUSR|S_IXUSR|~filemask)&0777 as the mode argument, where filemask is the file mode creation mask of the process

Isso significa que ele só executa chmod no diretório final no caminho.

    
por 10.08.2014 / 22:05