Chamando a função php de / var / www / folder (como www-user), que está localizado em um arquivo em / var (ou qualquer pasta) (com permissões de root?)

0

Eu escrevi um script que "caminha" por meio de / var / www / xyz e digitaliza pastas e muito mais. As pastas são todas "ligadas ao usuário", portanto, as permissões para uma única pasta são definidas para o usuário específico.

A execução deste script como root (por exemplo, em / root, 'php myscript.php') retorna os resultados esperados.

Agora eu quero transferir os resultados para o navegador: em / var / www / newfolder eu criei um arquivo index.php, apenas colei o script no arquivo e tentei (no navegador) e, claro, falhou. Isso me mostra apenas uma pequena parte dos resultados (mostrando os nomes das pastas específicas do usuário, quando não se aprofunda). Tenho certeza que é uma coisa de permissão, sendo o usuário www.

Ufa, então a questão é: existe a possibilidade de colocar um arquivo com uma função (por exemplo) em / var e permitir que um usuário www no navegador APENAS chame essa função? Se sim, quaisquer links ou dicas úteis? (Eu pesquisei muito e muito tempo agora, mas o que eu achei não valia nada)

OR

Chame uma função em / var / www / newfolder / que tenha permissão suficiente para escanear as pastas de usuários? (Eu acho que isso é crítico em relação à segurança)

    
por tommygun 11.09.2015 / 15:30

1 resposta

1

Você está correto em se preocupar com segurança. Você pode usar o bit setuid para criar um executável que seja executado como o proprietário do executável em vez do usuário que chamou o executável. Se o executável for de propriedade do root, ele será executado como root (certifique-se de não conceder privilégios de gravação a ninguém, exceto root). Use permissões de grupo se você quiser limitar quem pode executar o executável.

Use chmod o+s <path to script> para ativar o bit setuid. ( chmod 4750 <path to script> para permitir que o grupo de proprietários leia e execute um arquivo como o proprietário do arquivo, mas permitindo que outros usuários não tenham acesso).

Uma abordagem que não exija que o script seja executado como root seria configurar o proprietário do grupo e as permissões das pastas que você deseja verificar para que o usuário www possa ler o conteúdo da pasta. Usar o bit setgid nas pastas fará com que todos os arquivos e pastas criados dentro dessas pastas herdem a propriedade do grupo.

Use chmod g+s <path to folder> para ativar o bit de setgid. Para definir sua pasta /var/www/ (e subpastas) para agrupar www-user e permitir que os usuários desse grupo acessem todas as pastas usadas (como root):

chgrp -R www-user /var/www/
chmod -R g+srX /var/www/
    
por 11.09.2015 / 18:13