Permissões: Qual é o caminho certo para dar ao Apache mais permissões de usuário?

5

Contexto: Estou fazendo um painel de controle no navegador que me dá um botão de acesso a uma biblioteca de scripts (.sh e .php) que escrevi para processar vários tipos de dados para um projeto. É um "balcão único" para gerenciar dados para este projeto.

Eu fiz um bom progresso. Eu tenho o apache, PHP e MySQL rodando, e eu tenho meu front end no link . Bom até agora!

Agora o problema que estou tendo: Eu tenho um index.php que funciona bem, exceto que o usuário padrão do apache (que na minha máquina é chamado "_www") aparentemente não tem permissões para executar alguns dos meus scripts.

Então, quando eu faço:

<?php
    echo 'ls';
    echo 'whoami';
    echo '/Path/To/Custom/Script.sh';
?>

Eu recebo a saída de ls e whoami , mas não recebo nada do script personalizado. Se eu executar o script personalizado como eu (em um shell interativo), é claro que funciona.

Por fim, minha pergunta: qual é o modo correto de configurar isso? O servidor da Web foi executado como eu? Ou altere as permissões para que _www possa executar meus scripts personalizados?

Agradecemos antecipadamente por qualquer ajuda. Eu não sou um usuário avançado de Unix, então desculpe se esta é uma pergunta idiota!

    
por Cameron Brown 14.03.2011 / 18:56

2 respostas

3

A primeira melhor coisa seria colocar o script em um local padrão (como /usr/local/bin ), onde o servidor web teria permissões suficientes para executá-lo.

Se isso não for uma opção, você pode alterar o grupo do script usando chgrp groupname path e torná-lo executável para o grupo por chmod g+x path . Se o usuário _www ainda não estiver nesse grupo, adicione-o ao grupo por usermod -aG groupname _www .

    
por 14.03.2011 / 19:22
3

Para responder à sua pergunta, é melhor dar permissão ao grupo _www para executar seus scripts.

Use uma ACL para estender as permissões em seus scripts * .sh para permitir que um usuário no privilégio de execução do grupo _www:

cd /Path/To/Custom
setfacl -m g:_www:rx *.sh

Verifique também cada componente de diretório de / Path / To / Custom & verificar se o apache tem permissão para acessar (ou seja, 'ver') os scripts em / Path / To / Custom:

ls -ld /Path
ls -ld /Path/To
ls -ld /Path/To/Custom

Cada componente de diretório acima deve conceder ao apache um mínimo de permissão de execução além do componente final ( Custom ) onde o apache precisa executar & ler permissão. por exemplo. se todos os componentes de diretório acima tiverem outras permissões de r-x , o apache tem todos os direitos de acesso necessários para encontrar seus scripts no diretório Custom .

    
por 15.03.2011 / 17:44