2009-10-04 30 views
6

Tôi muốn thêm một số thư mục vào $ PATH khi chạy sudo, đây là yêu cầu vĩnh viễn (bán), không phải thứ gì đó cần được thêm vào chính kịch bản lệnh . Tôi nhận thấy rằng Django đã quản lý để làm điều đó, ($ PATH của tôi khi chạy sudo là "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/django/django-trunk/django/bin ") - vậy làm thế nào nó làm điều đó?

Trả lời

6

Tôi nghĩ rằng điều này sẽ làm việc ra nếu bạn lưu nó trong /root/.bashrc:

export PATH=/www/foo:$PATH 

tôi quên nếu nó PATH hoặc PYTHONPATH và nếu nó thực sự quan trọng, điều này được dựa trên .bashrc của người dùng của tôi:

export PYTHONPATH=/www/django:$PYTHONPATH 
+0

Xin cảm ơn, người trung gian, điều này đã thực hiện thủ thuật. –

+0

Không sao cả. Đừng quên chọn câu trả lời để người khác có thể biết nó đã được giải quyết :) –

+0

+1 để giải quyết vấn đề của OP. –

3

Bạn có thể đặt biến trong/etc/environment, sau đó sử dụng "sudo -i" để chạy tập lệnh (hoạt động trong ubuntu 10.10).

17

Đây là dòng trong file sudoers mà reset:

Defaults env_reset

Bạn có thể làm việc này bằng cách thêm PATH-env_keeps hoặc bằng cách thêm dòng này:

Defaults env_keep = "PATH"

EDIT : trung gian, bạn không tắt env_reset, bạn chỉ cần bỏ qua đường dẫn đặt lại

Hoặc bạn có thể xóa dòng vi phạm env_reset vi phạm.

Thậm chí tốt hơn, mặc dù bạn có thể khai báo một secure_path rằng sẽ thay thế PATH khi sudo được điều hành:

Defaults secure_path="/bin:/usr/bin"

Bằng cách đó bạn có thể kiểm soát những gì thư mục cụ thể để đưa vào con đường.

+1

Đây phải là câu trả lời được chấp nhận. Bạn có thể giới hạn quyền truy cập vào chỉ các đường dẫn cần thiết với cơ chế sudoer thay vì mở tất cả quyền truy cập của root. – Alkaline

+0

Truy cập tệp sudoers qua 'sudo visudo' – fiat

Các vấn đề liên quan