Permissão chmod herdável do diretório pai

1

Eu tenho um diretório chamado cache in /var/www , onde preciso fornecer permissão da seguinte maneira:

sudo chmod -R 777 cache

mas isso não é suficiente porque o script PHP cria subdiretórios para um melhor gerenciamento de arquivos como a , b , c ... e assim por diante. Agora, aqui, sempre que um novo diretório é criado, ele não herda a permissão do diretório pai "cache", mas fica com drwxr-xr-x access em vez de drwxrwxrwx .

Alguém pode ajudar?

    
por deej 23.05.2012 / 13:03

1 resposta

1

Este é o comportamento pretendido do recurso umask do UNIX, que é usado para controlar as permissões de arquivos recém-criados.

Por exemplo, com um umask de 0022 , os bits de gravação do grupo e do mundo serão mascarados. Isso provavelmente explica os resultados que você viu nos diretórios criados pelo seu script.

Você pode ajustar o umask no PHP para 0000 , mas como essa é uma configuração global de processo e o interpretador PHP está embutido no Apache, pode ter implicações de segurança além do seu script. A alternativa é emitir uma chamada chmod() depois de criar o diretório, que deve ser um pouco mais seguro e não depende da configuração umask .

Você também pode querer considerar se realmente precisa tornar esses diretórios mundiais graváveis. Se os arquivos precisarem ser graváveis pelo servidor da Web e por algum outro script, talvez você possa configurar o diretório para pertencer a um grupo comum para esses dois ambientes e torná-lo apenas gravável em grupo.

    
por James Henstridge 23.05.2012 / 17:10