Đặt PATH để áp dụng cho tất cả người dùng, bao gồm cả root / sudo


41

Các hướng dẫn trong Làm cách nào để đặt biến PATH cho tất cả người dùng trên máy chủ? hoạt động để đặt PATH cho tất cả người dùng 'bình thường'. Tuy nhiên, nếu tôi làm sudo -svà sau đó printenv PATHđường dẫn cập nhật không được hiển thị. Tôi đã xem ví dụ: Đặt đường dẫn TeX Live cho root , nhưng điều này dường như không có ý nghĩa với tôi, có lẽ vì tôi đến từ nền tảng Windows. Có cách nào để thiết lập đường dẫn thực sự toàn hệ thống, sao cho các mục được kế thừa hoàn toàn bởi mọi quy trình đang chạy trên hệ thống?

Câu trả lời:


43

Cập nhật:

Việc đặt các biến môi trường toàn cầu vẫn nên được thực hiện /etc/environment, nhưng như bạn đã chỉ ra, việc sử dụng sudo -scó tác dụng của các biến này là "biến mất".

Lý do cho điều đó là sudochính sách đặt lại Môi trường và thiết lập đường dẫn an toàn . Nó được bật theo mặc định:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Do đó, bất cứ điều gì được đặt trong /etc/environmentđường dẫn đều bị ghi đè sudo.

Trang hướng dẫn cho sudoerscác tiểu bang:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

Như một giải pháp thay thế, bạn có thể sử dụng sudo sunó sẽ cung cấp một trình bao với các đặc quyền gốc nhưng chứa đúng PATH.


Câu trả lời gốc

Bạn nên đặt nó trong /etc/environment.

Hãy thử sudo YOUR_TEXT_EDITOR /etc/environment(đảm bảo tạo bản sao lưu trước).

Để biết thêm thông tin: Biến môi trường

Biến môi trường toàn hệ thống

Không nên đặt các cài đặt biến môi trường ảnh hưởng đến toàn bộ hệ thống (chứ không phải chỉ là một người dùng cụ thể) trong bất kỳ tập lệnh cấp hệ thống nào được thực thi khi hệ thống hoặc phiên máy tính để bàn được tải, nhưng vào

/etc/environment- Tập tin này đặc biệt dành cho các cài đặt biến môi trường toàn hệ thống. Nó không phải là một tập lệnh, mà là bao gồm các biểu thức gán, mỗi biểu thức. Cụ thể, tệp này lưu trữ cài đặt đường dẫn và miền địa phương trên toàn hệ thống.

Không được khuyến khích:

/etc/profile- Tệp này được thực thi bất cứ khi nào một vỏ đăng nhập bash được nhập (ví dụ: khi đăng nhập từ bàn điều khiển hoặc qua ssh), cũng như bởi Trình quản lý hiển thị khi tải phiên máy tính để bàn. Đây có lẽ là tệp bạn sẽ được nhắc đến khi hỏi các quản trị viên hệ thống UNIX kỳ cựu về các biến môi trường. Tuy nhiên, trong Ubuntu, tệp này thực hiện ít hơn sau đó gọi tệp /etc/bash.bashrc.

/etc/bash.bashrc- Đây là phiên bản toàn hệ thống của tệp ~ / .bashrc. Ubuntu được cấu hình theo mặc định để thực thi tệp này bất cứ khi nào người dùng xâm nhập vào hệ vỏ hoặc môi trường máy tính để bàn.


À, với tôi đây là một cách sai lầm (mọi người nên thừa hưởng cùng một con đường, giai đoạn), nhưng tôi đoán đó là như thế nào.
Joseph Wright

Bạn có thể sử dụng visudo(cần quyền root) để chỉnh sửa cài đặt đường dẫn an toàn. đây không phải là một thực hành được khuyến nghị. Nó chỉ ở đây cho giáo dục.
Elliot Labs LLC

2

sudo -isẽ mô phỏng thông tin đăng nhập (theo cách tương tự sudo su -) và do đó cung cấp cho bạn các biến môi trường này.


1
Nó không hoạt động theo cách đó. Ít nhất PATH được thiết lập lại trên Ubuntu Trusty test-vm của tôi.
Martijn Heemels
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.