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)?

NarūnasK
fonte

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/ )

Mark Wagner
fonte
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
fikr4n
fonte
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

rundekugel
fonte
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..

Arno Bozo
fonte