Opcja „--up” w OpenVPN jest zwykle używana do routingu itp. Tak więc jest przetwarzana, zanim OpenVPN zrzuci uprawnienia roota do działania jak nikt. Jednak wywołuję skrypty powłoki, które muszą działać jako nieuprzywilejowany użytkownik.
Jak mogę to zrobić? Studiowałem uprawnienia Drop Process , w szczególności odpowiedzi wielomianowe i tylerl, ale nie rozumiem, jak je wdrożyć. Pracuję w Centos 6.5, a suid jest zablokowany, zarówno jako „chmod u + s”, jak i „setuid ()”.
Istnieje wtyczka OpenVPN („openvpn-down-root.so”), która umożliwia uruchamianie skryptów wywoływanych przez opcję „--down” jako root. Może istnieć odpowiednik, taki jak „openvpn-up-user.so”, ale go nie znalazłem.
Edytuj0
Według odpowiedzi Nikoli Kotur zainstalowałem runit-rpm Iana Meyera . Chociaż polecenie chpst działa w terminalu, w skrypcie up kończy się niepowodzeniem z „nie znaleziono polecenia”. Działa „sudo chpst” plus ustawienie odpowiedniego wyświetlacza i języka. Zobacz Dlaczego mój terminal nie wyświetla poprawnie znaków Unicode? Biorąc to pod uwagę, skrypt up potrzebuje następujących czterech linii:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &
Edytuj1
Według komentarza 0xC0000022L stwierdzam, że „sudo -u użytkownik” działa tak samo jak „sudo chpst -u użytkownik -U użytkownik”:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &
Będę studiować sudoers i zaktualizować, czy / kiedy dostanę sudo sam do pracy.