Privilégio SVN para usuário recém-criado

0

Preciso criar um novo usuário e, em seguida, svn co no diretório inicial do usuário recém-criado, chamando um script bash de uma página php.

O exemplo abaixo é uma linha do arquivo sudoers que vi em outro fórum.

http ALL=NOPASSWD:/usr/sbin/useradd,/bin/mkdir,/bin/ln,/bin/chown,/bin/cp,/bin/sed

Esta linha obviamente define um sudo sem senha para o usuário http e adiciona privilégios ao usuário http para usar os comandos useradd , mkdir , chown , cp e sed . Eu não gostaria de desativar o prompt sudo para todos os usuários, mas apenas para o usuário recém-criado (eu tinha visto uma resposta sobre comentar uma determinada linha no arquivo sudoers para impedir o prompt de senha sudo aqui no AU).

Da mesma forma, gostaria de adicionar privilégios de svn ao usuário www-data .

www-data ALL=NOPASSWD: /usr/sbin/useradd,/bin/svn

Atualmente, o usuário www-data pode criar um novo usuário usando o comando useradd , mas não pode usar o comando svn. (Eu posso estar fazendo isso completamente errado, então sinta-se livre para me corrigir)

Este é o script bash que estou tentando executar.

sudo useradd newuser -d /home/newuser -s /bin/bash -m -p password
echo yes | sudo svn --username [username] --password [password] co [SVN link] /home/newuser/public_html

Quando tento chamar esse script da página do php usando o comando

$output = shell_exec("sh ./includes/setupsite.sh 2>&1");

Eu recebo o erro

sudo: no tty present and no askpass program specified para a segunda linha (a linha svn co )

Mas, em vez disso, quando tento executar sem sudo , obtenho

----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: Authentication Required can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in '/var/www/.subversion/servers'. ----------------------------------------------------------------------- Store password unencrypted (yes/no)? svn: Can't make directory '/home/newuser/public_html': Permission denied

Então isso tornou óbvio que o sudo pode ser necessário. Eu vi uma questão semelhante aqui em si. Mas isso não foi respondido e a resposta fornecida não resolveu meu problema.

Atualização: as permissões / propriedade do arquivo são:

-rwxrwxrwx 1 www-data www-data 326 2012-08-08 17:56 setupsite.sh

Se você precisar de algum esclarecimento, por favor, deixe um comentário e eu vou editar a minha pergunta para adicionar os detalhes (desde que eu os tenha) o mais rápido possível.

    
por Shyam K 08.08.2012 / 17:17

1 resposta

0

O comando which [command] permite que você saiba qual comando do terminal está sendo chamado.

Por exemplo, na minha pergunta eu digitei um www-data ALL=NOPASSWD: /usr/sbin/useradd , observe a última parte /usr/bin/useradd esta é a localização real do comando useradd que é chamado pelo terminal. Isso pode ser obtido pelo uso de which useradd .

Da mesma forma, você também pode adicionar a pesquisa para o comando svn usando which svn e isso fornecerá a localização do comando svn . No meu caso, ele me deu /usr/bin/svn e assim quando editei a linha

www-data ALL=NOPASSWD: /usr/sbin/useradd,/bin/svn

em

www-data ALL=NOPASSWD: /usr/sbin/useradd,/usr/bin/svn

o usuário www-data recebeu privilégios svn e eu consegui fazer sudo sem senha para o usuário www-data.

    
por Shyam K 13.08.2012 / 06:20