Concede acesso de escrita do apache ao DocumentRoot no servidor dev

2

Eu tenho o apache em execução na estação de trabalho mac (OS X 10.7, com a cópia pré-instalada do apache) e nossos aplicativos da Web requerem acesso de gravação a determinadas seções do sistema de arquivos (geralmente apenas um diretório tmp, mas às vezes mais que isso.

Temos (literalmente) milhares de clientes, e eu quero ser capaz de pegar rapidamente uma cópia do código de qualquer site, e tê-lo "apenas trabalho", no entanto eu sempre preciso modificar manualmente as permissões unix de diretórios específicos após puxar o site de um cliente para fora do controle de origem (a lista de diretórios varia de um cliente para outro, como mudou ao longo dos anos).

Como é um servidor de desenvolvimento, com firewall desligado da internet geral, eu gostaria de dar acesso de gravação do apache / php a todo o DocumentRoot. Como posso fazer isso?

Eu tentei chmod 777 no DocumentRoot, mas se eu criar um diretório dentro dele, as permissões ainda serão 755 (proprietário: me , group: wheel ).

Eu acho que deve haver uma maneira de forçar todos os arquivos criados dentro do DocumentRoot a serem 777 ou talvez 775, com o usuário _www adicionado ao grupo wheel ?

    
por Abhi Beckert 08.04.2012 / 12:20

3 respostas

3

Consegui resolver isso usando as ACLs, que suportam permissões herdadas:

sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' /Library/WebServer/Documents

Agora, sempre que eu criar um novo checkout de controle de diretório ou fonte no DocumentRoot , o usuário _www terá acesso total de leitura / gravação.

    
por 09.04.2012 / 00:18
1

configurar sua umask para 000 ou 002 lhe dará as 777 ou 775 permissões de criação que você está procurando. O problema é que qualquer coisa que você criar em qualquer lugar receberá essas permissões. Se você está bem com 775, vá em frente. Em não, você poderia fazer um comando mkwebdir assim:

mkwebdir()
{
  umask 000;
  mkdir "$1";
  umask 022;
}

ou melhor ainda, se você não se importa com o comando sudo:

mkwebdir()
{
  mkdir "$1" && sudo chown _www "$1"
}

faça o seguinte: mkwebdir username

    
por 08.04.2012 / 14:30
0

Você pode tentar usar chown _www:wheel docroot e, em seguida, chmod g+s após essa configuração de umask, conforme necessário.

    
por 08.04.2012 / 13:30