2013-09-11 37 views
5

Dường như với tôi rằng nếu tôi viết kịch bản lệnh shell trong $HOME/path/to/script/myscriptexport PATH=$PATH:$HOME/path/to/script/ thì sudo -E myscript sẽ chạy tập lệnh phải không?tùy chọn sudo E không hoạt động?

From sudo man page:

-E Các -E (bảo vệ môi trường) tùy chọn chỉ đến chính sách bảo mật mà người dùng mong muốn bảo tồn các biến môi trường hiện tại của họ. Chính sách bảo mật có thể trả về lỗi nếu tùy chọn ‑E được chỉ định và người dùng không có quyền bảo vệ môi trường.

Nhưng sudo -E script không thể tìm thấy lệnh. Tôi biết tôi chỉ có thể thêm /absolute/path/to/script/ vào các tệp xác định biến số PATH cho sudo env, nhưng đó không phải là cách tiếp cận tôi muốn thực hiện.

Để giải quyết các ý kiến:
@ H2CO3: Tôi đã thấy sudo sudo nổi khắp nơi trên mạng, và nó làm tôi phát cáu rất nhiều, nó nói theo nghĩa đen "Hãy cho tôi quyền superuser để chạy superuser". Tôi không biết liệu nó có giải quyết được vấn đề hay không, nhưng nó có vẻ như một cách tiếp cận cơ bản không hoàn thiện. Sau đó, một lần nữa tôi bắt đầu sử dụng Linux/bsd hệ thống trở lại vào giữa những năm 90 vì vậy tôi có vấn đề với chỉ là sudo lệnh chính nó.
@rici: Kịch bản không có quyền thực thi, nhưng đó là một cái gì đó chắc chắn để kiểm tra bất cứ khi nào một cái gì đó không chạy trong các hệ thống * nix =)

+0

Có lẽ nó cần thêm quyền ... thử 'sudo sudo' ... Oh well ... –

+0

Bạn có chắc chắn rằng tệp tập lệnh của bạn có thể thực thi được không? – rici

+0

Hầu hết các bản phân phối của Linux/unix không còn yêu cầu CLI thực hiện bất kỳ nhiệm vụ 'tính toán tổng quát' nào. Chỉ vì sudo CÓ THỂ được sử dụng cho máy tính nói chung, không làm cho nó trở thành mục đích chính của công cụ này. Python CÓ THỂ (và thường) được sử dụng như một máy tính, nhưng rõ ràng nó không phải là 'phần mềm tính toán chung'. Tôi sử dụng sudo để thực thi các công cụ hữu ích dành riêng cho phát triển và các kịch bản mà tôi đã viết. Như vậy, tôi vui lòng yêu cầu bạn xem xét lại nội dung của http://stackoverflow.com/help/on-topic, http://superuser.com/help/on-topic hoặc quyết định của bạn để đánh dấu câu hỏi này là tắt đề tài. – MishaP

Trả lời

8

/etc/sudoers theo mặc định có một thiết lập để thiết lập lại môi trường. Và cũng định nghĩa một secure_path mặc định có hiệu lực khi bạn chạy sudo -E [cmd].

Bạn sẽ cần chỉnh sửa tệp/etc/sudoers và thêm 'env_keep' và đề cập đến các biến bạn muốn giữ lại.

Mặc định env_keep + = "PATH"

nhưng trước khi nhận xét này ra dòng secure_path. Sau đó thử lệnh của bạn thông qua sudo -E.

+3

'nhận xét dòng secure_path' điều này đã làm các trick, cảm ơn bạn! – MishaP

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