sudo: Làm thế nào để chỉ cho phép một đối số cho một lệnh?


8

Tôi muốn thêm một mục vào trình tự động của mình để cho phép một người dùng chạy lệnh với chính xác một đối số không phải là tùy chọn.

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 

Tôi có thể làm điều đó bằng cách sử dụng syntnax sudoers không? Hay tôi cần tạo một kịch bản trợ giúp?


nó có phải là một cuộc tranh cãi như mọi khi -abc? hoặc nó có thể thay đổi?
Mike

Đây [a-z]*đã là đối số tôi muốn. Vì vậy, đó là một đối số biến. (Tôi sử dụng / bin / echo chỉ để thử nghiệm.)
Elrond

Câu trả lời:


8

Theo hiểu biết của tôi, bạn không thể chuyển các đối số không phải lệnh thành sudo nếu đối số đó thay đổi.

Bạn có thể chỉ định một cái gì đó như thế này:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file

Điều này sẽ cho phép người dùng theo dõi một số tệp nhưng không phải các tệp khác.

Nếu bạn cần truyền một biến, tôi khuyên bạn nên sử dụng tập lệnh bao bọc.

Dưới đây là một ví dụ về trình bao bọc rsync:

https://sites.google.com/site/beingroot/articles/usiously-scripts/wrapper-script-to-use-rsync-via-sudo

Nếu bạn tìm kiếm google cho các trình bao bọc sudo, bạn có thể tìm thấy nhiều ví dụ khác.

Hãy chắc chắn mã cứng tất cả các đường dẫn và chạy kiểm tra độ tỉnh táo trên đầu vào nếu người dùng không thể tin cậy được.


2
Nên kiểm tra sự tỉnh táo nào. Không tin ai! [/ hoang tưởng]
Nathan C
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.