Permitir que o www-data use outro usuário - sudo ou ssh

1

Eu gostaria de permitir que meu script PHP (hospedado com apache2) execute comandos com outra conta de usuário.

Não quero que outro website hospedado no servidor possa se conectar a outra conta de usuário.

Se eu adicionar uma regra em / etc / sudoers, ela permitirá que qualquer pessoa do site use esse usuário.

A solução que recebi foi usar o ssh, com uma chave privada e uma chave pública. O script PHP inicia uma conexão ssh com o servidor em que está hospedado, na conta de usuário desejada.

Existe outra maneira que a minha solução com o ssh?

Atenciosamente

    
por Pierre Emmanuel Lallemant 28.09.2016 / 14:31

2 respostas

2

Meu instinto me diz que o que você está fazendo é uma idéia terrível. Mas na verdade você não deu informações suficientes sobre o motivo pelo qual você gostaria disso e qual é o caso de uso para dizer isso realmente.

Mas seu pensamento sobre sudo está errado, seja uma boa ideia ou não.

Uma entrada de sudoers é definida como:

  USER HOST = [(RUNAS)] [NOPASSWD:] [!] CMD[,...]

O que significa que o usuário USER está autorizado a executar CMD como usuário RUNAS (se fornecido). Então você poderia construir sua entrada sudoers assim:

  www-data YOUR-HOSTNAME = (YOUR-USER) NOPASSWD: /path/to/command

Isso permitirá que o usuário www-data no host especificado (ou ALL se você der isso como YOUR-HOSTNAME ) para executar o programa /path/to/command como usuário YOUR-USER sem uma senha.

Você também pode fornecer o comando ALL as, permitindo que cada comando YOUR-USER tenha acesso.

Exemplo

Com seus valores exemplares fornecidos, uma linha de sudoers consistiria no seguinte (assumindo mydeployer como o nome do host e thedeployer como o nome de usuário):

  www-data mydeployer = (thedeployer) NOPASSWD: ALL
    
por 28.09.2016 / 15:41
0

Você pode fazer dat usando sudo e uma configuração específica de sudoers:

Execute o comando do PHP como

sudo -H -u user2 /your/command parameters

Adicionar aos sudoers (comando sudo visudo )

www-data    ALL=(user2) NOPASSWD: /your/command

Isso permite que o apache execute um comando específico como outro usuário

    
por 28.09.2016 / 15:37