W skrócie : jak sprawić, by sudo nie spuszczało PATH za każdym razem?
Mam kilka stron internetowych wdrożonych na moim serwerze (testy Debiana) napisane przy użyciu Ruby on Rails. Używam Mongrel + Nginx do ich hostowania, ale jest jeden problem, który pojawia się, gdy muszę zrestartować Mongrel (np. Po wprowadzeniu pewnych zmian).
Wszystkie strony są sprawdzane w VCS (git, ale to nie jest ważne) i mają właściciela i grupę ustawioną dla mojego użytkownika, podczas gdy Mongrel działa w ramach użytkownika huh, kundla, który jest poważnie ograniczony w swoich prawach. Tak więc kundel musi zostać uruchomiony pod rootem (może automatycznie zmienić UID) lub kundlem.
Do zarządzania kundlem używam klejnotu mongrel_cluster, ponieważ pozwala on uruchamiać lub zatrzymywać dowolną liczbę serwerów Mongrel za pomocą jednego polecenia. Ale potrzebuje katalogu /var/lib/gems/1.8/bin, aby znajdował się w PATH: to nie wystarczy, aby uruchomić go z bezwzględną ścieżką .
Modyfikacja ŚCIEŻKI w katalogu głównym .bashrc nic nie zmieniła, poprawianie env_reset sudo i env_keep również nie zmieniły.
Więc pytanie: jak dodać katalog do PATH lub zachować PATH użytkownika w sudo?
Aktualizacja: kilka przykładów
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ sudo cat /etc/sudoers | egrep -v '^$|^#'
Defaults env_keep = "PATH"
root ALL=(ALL) ALL
%sudo ALL=NOPASSWD: ALL
$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Mogę też powiedzieć, że działa dokładnie w ten sposób również w stabilnej wersji Debiana (lenny).