# 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 su
lub www-data
? Kiedyś działało ...
Przypuszczalnie dzieje się tak z powodu /usr/sbin/nologin
, ale jak mogę przejść root
do tego jednego skryptu, bez narażania innych usług w systemie ( nologin
wybrałem Debian
zespół z dobrego powodu, chcę wierzyć)?
/bin/sh
jest używany domyślnie i musisz podać-s
opcję tylko, jeśli chcesz zmienić na/bin/bash
lub podobny.su www-data -s /bin/sh
aby wrócić do rootowaniasu
.Używasz tego,
su
co służy do „zmiany użytkownika”. Oczywiście to nie zadziała, ponieważwww-data
jest 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,
sudo
co jest używane do „wykonania polecenia jako inny użytkownik”.źródło
su
do tego celu i zawsze działało.sudo
to dodatkowy pakiet do zainstalowania, ale masz rację, mogę go użyć, aby osiągnąć to, czego chcę.Jeśli chcesz nie tylko wykonać jedno polecenie, ale przełączyć się
www-data
na, aby przetestować pewne rzeczy dla tego użytkownika, działało to dla mnie:Jest trochę krótszy. Wyjdź z sesji za pomocą [ctrl] + [d] lub
exit
źródło
Z tego rodzaju problemem skorzystałem z opcji
-p
:-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.
.źródło