Qual é a maneira correta de permitir que o www-root execute um script bash?

0

Eu tenho uma configuração típica de servidor LAMP (Ubuntu 16) com www-data: www-data setup para o Apache.

Eu tenho um script que não pode ser executado como root, mas precisa ser executado como www-data. O script recomenda executar sudo -u www-root -i -- <command> , mas quando faço isso, recebo o erro:

This account is currently not available.

Como posso permitir com segurança que o usuário www-data execute o comando, ou como eu permitiria que o usuário atual executasse o comando, se essa é uma direção melhor?

Nota: o script em questão é WP-CLI que força uma bandeira --allow-root, mas desaconselha razões de segurança .

    
por user658182 22.08.2016 / 23:30

1 resposta

1

Quando você usa a opção -i de sudo, isso significa que o sudo tentará usar o shell e o ambiente de login designados para esse usuário. Isso será um problema para a conta www-data , já que essa conta normalmente terá um shell desativado.

root@srv:# getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

O que você precisa descobrir é se realmente precisa do ambiente / shell desse usuário. Você não precisa da opção -i e pode simplesmente executar o comando sem ela. Isso executará o comando com o mesmo tipo de shell que o usuário que está executando o comando.

Então use isso.

sudo -u www-root <command>

Se, por algum motivo, você realmente precisar de -i , precisará fornecer a essa conta um shell (/ bin / sh, / bin / bash ou seu favorito).

    
por 22.08.2016 / 23:46