ในระยะสั้น : วิธีที่จะทำให้ sudo ไม่ล้างเส้นทางทุกครั้งหรือไม่
ฉันมีบางเว็บไซต์ที่ใช้งานบนเซิร์ฟเวอร์ของฉัน (การทดสอบ Debian) เขียนด้วย Ruby on Rails ฉันใช้ Mongrel + Nginx เพื่อโฮสต์พวกเขา แต่มีปัญหาหนึ่งที่เกิดขึ้นเมื่อฉันต้องรีสตาร์ท Mongrel (เช่นหลังจากทำการเปลี่ยนแปลงบางอย่าง)
ไซต์ทั้งหมดได้รับการตรวจสอบใน VCS (git แต่ไม่สำคัญ) และมีการตั้งค่าเจ้าของและกลุ่มให้กับผู้ใช้ของฉันในขณะที่ Mongrel ทำงานภายใต้ผู้ใช้ muhrel, huh, mongrel ที่ถูก จำกัด สิทธิ์อย่างรุนแรง ดังนั้น Mongrel จะต้องเริ่มต้นภายใต้รูท (สามารถเปลี่ยน UID ได้โดยอัตโนมัติ) หรือ mongrel
ในการจัดการ mongrel ฉันใช้ mongrel_cluster gem เพราะอนุญาตให้เริ่มหรือหยุดเซิร์ฟเวอร์ Mongrel จำนวนเท่าใดก็ได้ด้วยคำสั่งเดียว แต่มันต้องการไดเรกทอรี / var/lib/gems/1.8/bin เพื่อที่จะอยู่ใน PATH: นี่ไม่เพียงพอที่จะเริ่มด้วยเส้นทางที่สมบูรณ์ .
การปรับเปลี่ยน PATH ในรูท. 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
นอกจากนี้ฉันสามารถพูดได้ว่ามันทำงานได้ดีในเดเบียนคอกเทน (เลนนี่) เช่นกัน