Tại sao chạy lệnh như sudo trả lại lệnh không tìm thấy?


12

Lệnh mẫu:

drush cc all

hoạt động, nhưng điều này:

sudo drush cc all

đưa cho tôi:

sudo: drush: command not found

Tại sao? Làm thế nào để khắc phục điều này?


Đôi khi tôi cũng gặp vấn đề này, với các lệnh cơ bản như cd. Sử dụng dzdo cdtrả về "lệnh không tìm thấy". Tất nhiên sau đó tôi nhận ra rằng cding vào một thư mục mà tôi không có quyền ở, sẽ không thể giúp ích rất nhiều, vì vậy tôi có cần một vỏ rễ hoặc nhu cầu dzdo ls, dzdo mvvv các nội dung từ bên ngoài mà dir.
tự đại diện

2
Vấn đề với sudo cdđó cdlà một lệnh tích hợp, không phải là một chương trình. Nếu bạn muốn vào một thư mục mà bạn không có quyền truy cập và (ví dụ) đổi tên một tệp ở đó, bạn có thể làm (ví dụ) sudo mv dir/oldfile dir/newfile hoặc sudo sh -c "cd dir; mv oldfile newfile" .
G-Man nói 'Phục hồi Monica'

Câu trả lời:


13

Khi bạn sudo, bạn nhận được một cấu hình sẵn $PATH, đó là (được cho là) ​​một cái gì đó giống như đường dẫn mặc định của người dùng gốc . Chương trình của bạn không nằm trong danh sách các thư mục được xác định bởi $PATH.

Xem ví dụ

sudo cố gắng an toàn khi thực hiện các lệnh bên ngoài.

Có hai cách riêng biệt để đối phó với các biến môi trường. Theo mặc định, tùy chọn env_reset sudoers được bật. Đây nguyên nhân các lệnh được thực hiện với một môi trường tối thiểu chứa TERM, PATH, HOME, SHELL, LOGNAME, USERUSERNAMEthêm vào các biến từ quá trình cách gọi phép của env_checkenv_keep sudoers tùy chọn. Có một danh sách trắng cho các biến môi trường.

Nếu bạn không thể cấu hình sudođể bảo vệ tài khoản của mình $PATH, cách giải quyết thông thường là chỉ định tên đường dẫn đầy đủ của chương trình. Điều đó có thể không hoạt động tốt với các tập lệnh gọi các tệp thực thi khác trong thư mục (không truy cập).


0

Bạn nên chỉ định đường dẫn đầy đủ. Nó cũng an toàn hơn; Nếu bạn không chỉ định đường dẫn, có thể hiểu rằng kẻ tấn công có thể tạo một chương trình khác sẽ được chạy với quyền root.

Ngoài ra, bạn cần phải đặt một dòng vào /etc/sudoersđể cho phép nó. man sudoersđối với cú pháp, nó quá nhiều để đặt ở đây.

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.