Bạn có thể kiểm tra tại sao (nó khác) bằng cách chạy sudo sudo -V
.
Ví dụ trên Linux chạy:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Lưu ý: Trên macOS / BSD, chỉ cần chạy : sudo sudo -V
.
Danh sách trên bị hạn chế do plugin chính sách bảo mật mặc định trong một số bản phân phối Linux.
Điều này được giải thích thêm trong man sudoers
:
Nếu secure_path
tùy chọn được đặt, giá trị của nó sẽ được sử dụng cho PATH
biến môi trường.
secure_path
- Đường dẫn được sử dụng cho mọi lệnh chạy từ sudo. Nếu bạn không tin tưởng những người chạy sudo có PATH
biến môi trường lành mạnh, bạn có thể muốn sử dụng biến này.
Một cách sử dụng khác là nếu bạn muốn có đường dẫn gốc của Google thì hãy tách biệt với đường dẫn người dùng của Google. Người dùng trong nhóm được chỉ định bởi exempt_group
tùy chọn không bị ảnh hưởng bởi secure_path
. Tùy chọn này không được đặt theo mặc định.
Nếu đó là trường hợp, bạn có thể thay đổi điều đó bằng cách chạy sudo visudo
và chỉnh sửa tệp cấu hình và sửa đổi secure_path
(thêm đường dẫn bổ sung cách nhau :
) hoặc thêm người dùng của bạn vào exempt_group
(để bạn không bị ảnh hưởng bởi secure_path
các tùy chọn).
Hoặc để vượt qua người dùng PATH
tạm thời, bạn có thể chạy:
sudo env PATH="$PATH" my_command
và bạn có thể kiểm tra xem bằng cách:
sudo env PATH="$PATH" env | grep ^PATH
Xem thêm: Làm thế nào để sudo
bảo quản $PATH
?
Lý do khác tại sao môi trường có thể khác sudo
, vì bạn có thể env_reset
bật tùy chọn trong sudoers
tệp của mình . Điều này khiến các lệnh được thực thi với một môi trường mới, tối thiểu.
Vì vậy, bạn có thể sử dụng env_keep
tùy chọn (không được khuyến nghị vì lý do bảo mật ) để bảo vệ các biến môi trường của người dùng của bạn:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"