Nie można uruchomić polecenia jako danych www za pomocą 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

Co jest nie tak z moim sulub www-data? Kiedyś działało ...

Przypuszczalnie dzieje się tak z powodu /usr/sbin/nologin, ale jak mogę przejść rootdo tego jednego skryptu, bez narażania innych usług w systemie ( nologinwybrałem Debianzespół z dobrego powodu, chcę wierzyć)?

NarūnasK
źródło

Odpowiedzi:

19

Bez debaty sukontra sudomożesz spróbować dodać -s /bin/shdo linii poleceń. (Nie mogłem zweryfikować, czy ta opcja jest dostępna dla jessie, ponieważ serwer stron podręcznika Debiana nie działa: https://manpages.debian.org/ )

Mark Wagner
źródło
Niepoprawnie założyłem, że /bin/shjest używany domyślnie i musisz podać -sopcję tylko, jeśli chcesz zmienić na /bin/bashlub podobny.
NarūnasK,
3
Dzięki, działa w Debianie 9, su www-data -s /bin/shaby wrócić do rootowania su.
PJ Brunet,
4
@PJBrunet - „aby wrócić do roota” (zakładając, że zrobiłeś to z roota), wpisz „exit”. Aby uruchomić nową powłokę roota, wpisz su.
ChronoFish
31

Używasz tego, suco służy do „zmiany użytkownika”. Oczywiście to nie zadziała, ponieważ www-datajest to konto użytkownika, którego nie można użyć do zalogowania się. Powiedziałeś to: /usr/sbin/nologin.

Być może chcesz tego, sudoco jest używane do „wykonania polecenia jako inny użytkownik”.

sudo -u www-data ./http-app.py
fikr4n
źródło
Zawsze używałem sudo tego celu i zawsze działało. sudoto dodatkowy pakiet do zainstalowania, ale masz rację, mogę go użyć, aby osiągnąć to, czego chcę.
NarūnasK,
1

Jeśli chcesz nie tylko wykonać jedno polecenie, ale przełączyć się www-datana, aby przetestować pewne rzeczy dla tego użytkownika, działało to dla mnie:

sudo -u www-data sh

Jest trochę krótszy. Wyjdź z sesji za pomocą [ctrl] + [d] lubexit

rundekugel
źródło
0

Z tego rodzaju problemem skorzystałem z opcji -p:

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

-p: środowisko jest zachowane. W szczególnych nie próbuje zalogować się na nowym koncie, więc nie pojawi się komunikat: This account is currently not available..

Arno Bozo
źródło