Коротше кажучи : як зробити так, щоб судо не змивало PATH кожного разу?
У мене на веб-сервері розгорнуті деякі веб-сайти (тестування Debian), написані Ruby on Rails. Я використовую Mongrel + Nginx для їх розміщення, але є одна проблема, яка виникає, коли мені потрібно перезапустити Mongrel (наприклад, після внесення деяких змін).
Усі сайти перевіряються в VCS (git, але це не важливо), і власник і група встановлені моєму користувачеві, тоді як Mongrel працює під користувачем, так, монгрель, який сильно обмежений у своїх правах. Отже, Mongrel потрібно запускати під root (він може автоматично змінювати UID) або mongrel.
Для управління mongrel я використовую gem mongrel_cluster, оскільки він дозволяє запускати або зупиняти будь-яку кількість серверів Mongrel лише однією командою. Але йому потрібен каталог /var/lib/gems/1.8/bin, щоб він був у PATH: цього недостатньо, щоб почати його з абсолютного шляху .
Змінення PATH в root .bashrc нічого не змінило, налаштування env_reset sudo та env_keep також не змінилося.
Отже, питання: як додати каталог до PATH або зберегти PATH користувача у sudo?
Оновлення: кілька прикладів
$ 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
Також можу сказати, що він працює саме так і в стабільній (lenny) Debian.