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.