Como faço para permitir que um usuário sudo sem senha?

1

Eu tenho um script php com isso:

<?php
#echo exec('whoami');

$output = shell_exec('bash /usr/local/svn/bash_repo/make-live');
echo "$output";
?>

O script make-live contém isto:

#!/bin/bash

cd /var/www-cake

sudo svn checkout file:///usr/local/svn/bash_repo/repo/

echo "Head revision has been pushed to live server"

Portanto, o usuário PHP que é www-data precisa ter nopasswd para esse script. Foi-me dito que preciso adicionar:

  

www-data ALL = NOPASSWD:   / usr / local / svn / bash_repo / make-live

Para sudoers para permitir isso. Primeiro eu corro sudo visudo , mas não tenho experiência com o vi, então eu tento abri-lo no gedit com export EDITOR=gedit && sudo -E visudo , que então apenas abre um arquivo sudoers.tmp que está vazio. Eu adiciono a linha e salvo. Mas isso não salva.

Por isso, tento apenas sudo visudo e adiciono a linha logo abaixo desta parte:

# User privilege specification
root    ALL=(ALL) ALL
www-data ALL=NOPASSWD: /usr/local/svn/bash_repo/make-live

Fechei os sudoers e reabri o para verificar se foi salvo. Eu até reinicio o apache.

Eu corro o arquivo php e ele ainda não funciona.

O que estou perdendo?

    
por JD Isaacks 29.12.2010 / 21:46

1 resposta

2

Adicionar seu usuário do apache www-data aos sudoers e, pior ainda, adicionar uma opção sem senha é uma IDÉIA REALMENTE RUIM. É um problema de segurança ter o usuário do apache sendo capaz de fazer qualquer coisa como root e você deve evitá-lo.

O que você precisa fazer é alterar as permissões do / var / www-cake para que o www-data possa gravar nele quando você executar svn checkout sem o sudo.

Tente isto: sudo chown www-data:www-data /var/www-cake

Remova o sudo e tente novamente.

    
por Martin Owens -doctormo- 29.12.2010 / 21:55