# 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 su
ou www-data
? Costumava trabalhar ...
Presumivelmente, é por causa disso /usr/sbin/nologin
, mas como eu deixo cair root
para esse script único, sem comprometer outros serviços no sistema ( nologin
foi escolhido pela Debian
equipe por um bom motivo, eu quero acreditar)?
/bin/sh
é usado por padrão e você deve especificar a-s
opção somente se desejar alterar para/bin/bash
ou semelhante.su www-data -s /bin/sh
para voltar ao root apenas digitandosu
.Você está usando o
su
que é usado para "alternar usuário". Claro que não funcionará porquewww-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
sudo
que é usado para "executar um comando como outro usuário".fonte
su
para 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.Se você deseja não apenas executar um comando, mas alternar para
www-data
para testar algumas coisas para esse usuário, isso funcionou para mim:É um pouco mais curto. Saia da sessão com [ctrl] + [d] ou
exit
fonte
Com esse tipo de problema, usei a opção
-p
:-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.
.fonte