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