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

8
# 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 meu su ou www-data ? Costumava trabalhar ...

Presumivelmente, isso é por causa do /usr/sbin/nologin , mas como eu descarto root para esse script, sem comprometer outros serviços no sistema ( nologin foi escolhido por Debian team por um bom motivo, Eu quero acreditar)?

    
por NarūnasK 01.12.2016 / 23:13

2 respostas

13

Sem debater su vs. sudo , você pode tentar adicionar -s /bin/sh à sua linha de comando. (Eu não pude verificar se esta opção está disponível para jessie já que o servidor web do manpages Debian não está funcionando: link )

    
por 02.12.2016 / 00:13
15

Você está usando su , que é 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 login. Você disse: /usr/sbin/nologin .

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

sudo -u www-data ./http-app.py
    
por 01.12.2016 / 23:33

Tags