No se puede ejecutar el 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

¿Qué le pasa a mi suo www-data? Solía ​​funcionar ...

Presumiblemente esto se debe a la /usr/sbin/nologin, pero ¿cómo puedo abandonar rooteste script, sin comprometer otros servicios en el sistema ( nologinha sido elegido por el Debianequipo por una buena razón, quiero creer)?

NarūnasK
fuente

Respuestas:

18

Sin debatir suvs. sudopuede intentar agregar -s /bin/sha su línea de comando. (No pude verificar que esta opción esté disponible para jessie ya que el servidor web de páginas de manual de Debian no funciona: https://manpages.debian.org/ )

Mark Wagner
fuente
Asumí incorrectamente que /bin/shse usa de forma predeterminada y debe especificar la -sopción solo si desea cambiar a /bin/basho similar.
NarūnasK
3
Gracias, funciona en Debian 9 su www-data -s /bin/shpara volver a la raíz simplemente escriba su.
PJ Brunet
44
@PJBrunet - "para volver a la raíz" (suponiendo que lo hiciste desde la raíz), escribirías "exit". Para iniciar un nuevo shell raíz, debe escribir su.
ChronoFish
31

Está utilizando el suque se utiliza para "cambiar de usuario". Por supuesto, no funcionará porque www-dataes una cuenta de usuario que no se puede usar para iniciar sesión. Usted ha dicho que: /usr/sbin/nologin.

Quizás lo que quiere es lo sudoque se usa para "ejecutar un comando como otro usuario".

sudo -u www-data ./http-app.py
fikr4n
fuente
Siempre lo usé supara este propósito y siempre solía funcionar. sudoes un paquete adicional para instalar, pero tienes razón, puedo usarlo para lograr lo que quiero.
NarūnasK
1

Si desea no solo ejecutar un comando, sino cambiar a www-datapara probar algunas cosas para ese usuario, esto funcionó para mí:

sudo -u www-data sh

Es un poco más corto. Salga de la sesión con [ctrl] + [d] oexit

rundekugel
fuente
0

Con este tipo de problema he usado la opción -p:

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

-p: se preserva el medio ambiente. En particular no se trate de inicio de sesión con la nueva cuenta, por lo que no recibe el mensaje: This account is currently not available..

Arno Bozo
fuente