Kurz gesagt : Wie kann Sudo dazu gebracht werden, PATH nicht jedes Mal zu löschen?
Ich habe einige Websites auf meinem Server bereitgestellt (Debian-Tests), die mit Ruby on Rails geschrieben wurden. Ich verwende Mongrel + Nginx, um sie zu hosten, aber es gibt ein Problem, das auftritt, wenn ich Mongrel neu starten muss (z. B. nachdem ich einige Änderungen vorgenommen habe).
Alle Sites werden in VCS (Git, aber es ist nicht wichtig) überprüft und haben Eigentümer und Gruppe auf meinen Benutzer festgelegt, während Mongrel unter dem, huh, Mongrel-Benutzer ausgeführt wird, dessen Rechte stark eingeschränkt sind. Daher muss Mongrel unter root (es kann automatisch die UID ändern) oder mongrel gestartet werden.
Um mongrel zu verwalten, verwende ich mongrel_cluster gem, da es das Starten oder Stoppen einer beliebigen Anzahl von Mongrel-Servern mit nur einem Befehl ermöglicht. Das Verzeichnis /var/lib/gems/1.8/bin muss sich jedoch in PATH befinden. Dies reicht nicht aus, um es mit einem absoluten Pfad zu starten .
Das Ändern von PATH in root .bashrc hat nichts geändert, das Ändern von sudos env_reset und env_keep auch nicht.
Also die Frage: Wie füge ich ein Verzeichnis zu PATH hinzu oder behalte den PATH des Benutzers in sudo?
Update: einige Beispiele
$ 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
Ich kann auch sagen, dass es genau so auch in Debian Stable (Lenny) funktioniert.