Impossibile eseguire il comando come 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

Cosa c'è che non va nel mio suo www-data? Funzionava ...

Presumibilmente, ciò è dovuto al fatto /usr/sbin/nologin, ma come posso scegliere rootquesto script, senza compromettere altri servizi sul sistema ( nologinè stato scelto dal Debianteam per una buona ragione, voglio crederci)?

Risposte:


18

Senza discutere suvs. sudopuoi provare ad aggiungere -s /bin/shalla tua riga di comando. (Non ho potuto verificare che questa opzione sia disponibile per jessie poiché il server web delle pagine man Debian non funziona: https://manpages.debian.org/ )


Ho erroneamente ipotizzato che /bin/shvenga utilizzato per impostazione predefinita e devi specificare l' -sopzione solo se vuoi passare a /bin/basho simili.
— NarūnasK,

3
Grazie, funziona in Debian 9 su www-data -s /bin/shper tornare alla radice semplicemente digitando su.
— PJ Brunet,

4
@PJBrunet - "per tornare alla radice" (supponendo che tu abbia fatto una cazzata dalla radice) dovresti digitare "exit". Per avviare una nuova shell di root, digitare su.
— ChronoFish,

31

Stai utilizzando suquale viene utilizzato per "cambiare utente". Ovviamente non funzionerà perché www-dataè un account utente che non può essere utilizzato per accedere. Hai detto che: /usr/sbin/nologin.

Forse quello che vuoi è sudoche viene utilizzato per "eseguire un comando come un altro utente".

sudo -u www-data ./http-app.py

Ho sempre usato super questo scopo e funzionava sempre. sudoè un pacchetto aggiuntivo da installare, ma hai ragione, posso usarlo per ottenere quello che voglio.
— NarūnasK,

1

Se vuoi non solo eseguire un comando, ma passare a www-dataper testare alcune cose per quell'utente, questo ha funzionato per me:

sudo -u www-data sh

È un po 'più corto. Esci dalla sessione con [ctrl] + [d] oexit


0

Con questo tipo di problema ho usato l'opzione -p:

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

-p: l'ambiente è preservato. In particolare essa non cerca di login con il nuovo account, in modo da non ottenere il messaggio: This account is currently not available..

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.