Estou trabalhando para automatizar a criação de repositórios do subversion e sites associados, conforme descrito nesta postagem de blog que escrevi . Estou enfrentando problemas ao redor da parte em que su para o usuário www-data para executar o seguinte comando:
svnadmin create /svn/repository
Há uma verificação no início do script que garante que ele esteja sendo executado como root ou sudo, e tudo depois desse comando precisa ser executado como root. Existe uma boa maneira de executar esse comando como www-data e depois voltar para o root para finalizar?
This account is currently not available.
su - www-data -s /bin/bash -c 'your_command'
para fazer isso funcionar. O usuário www-data possui shell,/usr/sbin/nologin
portanto, sem o-s
parâmetro, ele leva à mensagem de erro.Com 'su' é provável que solicite uma senha, e www-data não tem senha. Eu recomendo o comando
sudo
:A condição é que seu usuário deve ser root ou configurado no arquivo sudoers
fonte
Use
su
:fonte
2 Abordagens possíveis :
1)
sudo
comando:Na maioria dos casos, você terá acesso ao
sudo
comando e, portanto, a solução é simplesmente:sudo -u target_user target_command
2)
su
comando (se o sudo não estiver instalado.Ex. alpine-linux images
):su - target_user -c 'target_command'
Caso você receba um erro "Esta conta não está disponível no momento" , o usuário terá uma política de não login (acesso ao shell) em vigor. Se sim, considere usar:
su - target_user -s /bin/bash -c 'target_command'
(Com base no comentário valioso do @Petr sobre a
-s
sinalização para acomodarwww-data
a política de não login do usuário)fonte