Cách lập trình thêm safe_path trong tệp sudoers


11

Tôi đang cố gắng xây dựng tập lệnh dữ liệu người dùng cho một phiên bản EC2 xây dựng nút và npm từ github, sau đó bắt đầu một dịch vụ. Để bôi trơn các bánh xe này, tôi cần thêm:

:/usr/local/bin

đến cuối dòng trong / etc / sudoers bắt đầu:

Defaults        secure_path="

/superuser/927512/how-to-set-path-for-sudo-commands nói về việc sử dụng visudo để đạt được điều này, nhưng tôi muốn thực hiện theo chương trình trong dữ liệu người dùng EC2.

/programming/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-script nói về việc chỉnh sửa tệp sudoers, nhưng có vẻ hết sức tuyệt vời cho những gì tôi đang cố gắng để đạt được.

Tôi nghĩ rằng nó sẽ dễ dàng grep dòng và thay thế nó, nhưng tôi đã bối rối. Không chỉ bởi vì đóng dấu phẩy ngược khó chịu!

Câu trả lời:


6

Nếu bạn có thể sống với việc thay thế secure_pathgiá trị thay vì nối thêm nó, bạn có thể sử dụng một giải pháp dễ dàng hơn nhiều. Thông thường sudo có một thư mục cấu hình như /etc/sudoers.dnơi bạn có thể thả các tệp cấu hình bổ sung.

Chỉ cần tạo một tệp ở đó với secure_pathgiá trị hoàn chỉnh của bạn :

Defaults secure_path="<default value>:/usr/local/bin"

Điều này ghi đè giá trị từ cấu hình chính. Nếu giá trị đường dẫn là giống nhau cho tất cả các máy của bạn, điều này có thể dễ dàng được triển khai với các tập lệnh hoặc gói.

Điều này có lợi thế bổ sung mà bạn không phải kiểm tra và có thể hợp nhất các tệp cấu hình khi gói sudo được cập nhật trong tương lai.


2

giả sử bạn biết dòng có safe_path tồn tại, một lệnh sed đơn giản để thực hiện việc này

sed -i -e '/secure_path/ s[=.*[&:/usr/local/bin[' /etc/sudoers

hoặc tinh vi hơn một chút (kiểm tra cú pháp nhiều hơn về đầu vào):

sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=\1:/usr/local/bin[' /etc/sudoers
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.