Befehl kann mit su nicht als www-Daten ausgeführt werden

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

Was ist los mit meinem suoder www-data? Früher hat es funktioniert ...

Vermutlich liegt das an dem /usr/sbin/nologin, aber wie kann ich dann rootfür dieses eine Skript aufhören, ohne andere Dienste auf dem System zu beeinträchtigen ( nologinwurde vom DebianTeam aus einem guten Grund ausgewählt, möchte ich glauben)?

NarūnasK
quelle

Antworten:

17

Ohne diskutieren suvs. sudokönnen Sie versuchen Sie , -s /bin/shauf Ihre Befehlszeile. (Ich konnte nicht überprüfen, ob diese Option für Jessie verfügbar ist, da der Debian-Hilfeseiten-Webserver nicht funktioniert: https://manpages.debian.org/ )

Mark Wagner
quelle
Ich habe fälschlicherweise angenommen, dass dies /bin/shstandardmäßig verwendet wird, und Sie müssen die -sOption nur angeben, wenn Sie zu /bin/bashoder ähnlich wechseln möchten .
NarūnasK
3
Danke, es funktioniert in Debian 9 su www-data -s /bin/sh, um zurück zum Root- Modus zu gelangen su.
PJ Brunet
3
@PJBrunet - "um zurück zu root zu gelangen" (vorausgesetzt, Sie würden von root aus su'd), würden Sie "exit" eingeben. Um eine neue Root-Shell zu starten, geben Sie su ein.
ChronoFish
30

Sie verwenden sudas, um "Benutzer zu wechseln". Natürlich funktioniert es nicht, da www-dataes sich um ein Benutzerkonto handelt, das nicht zum Anmelden verwendet werden kann. Sie haben es gesagt: /usr/sbin/nologin.

Vielleicht möchten Sie, dass sudo"ein Befehl als ein anderer Benutzer ausgeführt wird".

sudo -u www-data ./http-app.py
fikr4n
quelle
Ich habe es immer sufür diesen Zweck benutzt und es hat immer funktioniert. sudoist ein extra Paket zu installieren, aber Sie haben recht, ich kann es verwenden, um das zu erreichen, was ich will.
NarūnasK
1

Wenn Sie nicht nur einen Befehl ausführen, sondern auf wechseln möchten www-data, um einige Dinge für diesen Benutzer zu testen, hat dies für mich funktioniert:

sudo -u www-data sh

Es ist ein bisschen kürzer. Beenden Sie die Sitzung mit [Strg] + [d] oderexit

rundekugel
quelle
0

Bei dieser Art von Problem habe ich die Option verwendet -p:

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

-p: Die Umgebung bleibt erhalten. In eigentümlich ist nicht versuchen , es mit dem neuen Konto anmelden, so dass Sie die Nachricht nicht bekommen: This account is currently not available..

Arno Bozo
quelle