Não é possível executar o comando como www-data usando su


14
# su -l www-data ./http-app.py
This account is currently not available.
# su -l www-data -c ./http-app.py
This account is currently not available.
# su -c ./http-app.py www-data 
This account is currently not available.
# su -lc ./http-app.py www-data 
This account is currently not available.
# getent passwd www-data 
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
# getent shadow www-data 
www-data:*:16842:0:99999:7:::
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:        8.6
Codename:       jessie

O que há de errado com o meu suou www-data? Costumava trabalhar ...

Presumivelmente, é por causa disso /usr/sbin/nologin, mas como eu deixo cair rootpara esse script único, sem comprometer outros serviços no sistema ( nologinfoi escolhido pela Debianequipe por um bom motivo, eu quero acreditar)?

Respostas:


18

Sem debater suvs., sudovocê pode tentar adicionar -s /bin/shà sua linha de comando. (Não foi possível verificar se esta opção está disponível para jessie, pois o servidor da web manpages do Debian não está funcionando: https://manpages.debian.org/ )


Eu assumi incorretamente que /bin/shé usado por padrão e você deve especificar a -sopção somente se desejar alterar para /bin/bashou semelhante.
NarūnasK

3
Obrigado, ele funciona no Debian 9 su www-data -s /bin/shpara voltar ao root apenas digitando su.
PJ Brunet

4
@PJBrunet - "para voltar ao root" (supondo que você o su'd do root), digite "exit". Para iniciar um novo shell raiz, digite su.
ChronoFish 25/01

31

Você está usando o suque é usado para "alternar usuário". Claro que não funcionará porque www-dataé uma conta de usuário que não pode ser usada para fazer login. Você disse que: /usr/sbin/nologin.

Talvez o que você queira seja o sudoque é usado para "executar um comando como outro usuário".

sudo -u www-data ./http-app.py

Eu sempre usei supara esse fim e sempre funcionava. sudoé um pacote extra para instalar, mas você está certo, eu posso usá-lo para alcançar o que quero.
NarūnasK

1

Se você deseja não apenas executar um comando, mas alternar para www-datapara testar algumas coisas para esse usuário, isso funcionou para mim:

sudo -u www-data sh

É um pouco mais curto. Saia da sessão com [ctrl] + [d] ouexit


0

Com esse tipo de problema, usei a opção -p:

su -pc ./http-app.py www-data

-p: o ambiente é preservado. Em peculiar ele não tenta fazer o login com a nova conta, para que você não receber a mensagem: This account is currently not available..

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.