Mam skrypt, który wykonuje trzy funkcje: A && B && C
.
Funkcja B
musi być uruchomiony jako super-użytkownika, podczas A
i C
nie.
Mam kilka rozwiązań, ale żadne z nich nie jest satysfakcjonujące:
sudo cały skrypt:
sudo 'A && B && C'
To wydaje się złym pomysłem do uruchomienia
A
iC
jako superużytkownik, jeśli nie jest potrzebneuczyń skrypt interaktywnym:
A && sudo B && C
Być może będę musiał wpisać hasło, ale chcę, aby mój skrypt nie był interaktywny, ponieważ każda funkcja może zająć trochę czasu i nie chcę, aby skrypt na mnie czekał. Właśnie dlatego jest to przede wszystkim skrypt, więc nie muszę go oglądać.
Głupie rozwiązanie:
sudo : && A && sudo -n B && C
Po pierwsze, wydaje się głupotą, aby najpierw uruchomić no-op
sudo
, a także muszę kciuka, że A nie zajmie więcej niż$sudo_timeout
.Hipotetyczne rozwiązanie (chciałbym, żebyś mi powiedział, że istnieje):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'
Spowodowałoby to podanie mojego hasła na początku, a następnie użycie tych poświadczeń tylko w razie potrzeby.
Jakie jest twoje zdanie na ten temat? Byłbym bardzo zaskoczony, że nie ma rozwiązania tego problemu, ponieważ uważam, że jest to dość powszechny problem (co z tym make all && sudo make install
)
A
i . Brak problemów z przekroczeniem limitu czasu i brak uprawnień dla A i C. Nie sądzę, że 4 jest możliwe, wydaje się „globalnym stanem” dla użytkownika.C
su -l some_non_priviliged_user
sudo