Tôi có một bash
tập lệnh cần chạy với quyền root , nhưng phải được người dùng bình thường gọi.
Khó khăn là tập lệnh không nên yêu cầu mật khẩu và tôi không muốn sử dụng tập tin sudoers . Tôi muốn tránh sử dụng sudo hoặc su .
Điều này có thể không?
Tôi có một bash
tập lệnh cần chạy với quyền root , nhưng phải được người dùng bình thường gọi.
Khó khăn là tập lệnh không nên yêu cầu mật khẩu và tôi không muốn sử dụng tập tin sudoers . Tôi muốn tránh sử dụng sudo hoặc su .
Điều này có thể không?
Câu trả lời:
Nếu đó không phải là tập lệnh bash mà là một ứng dụng thông thường, bạn sẽ trao quyền sở hữu cho tập tin gốc và thiết lập bit setuid trên ứng dụng. Sau đó, khi thực thi, người dùng hiệu quả mà ứng dụng đang chạy bên dưới là root. Do những lo ngại về bảo mật, tuy nhiên, điều này nằm trong nhiều hệ thống bị cấm đối với tập lệnh shell. Câu hỏi này ở đây trên unix.stackexchange.com sẽ xử lý các cách khắc phục điều này.
Sử dụng sudo. Nếu bạn không muốn phải gọi sudo /path/to/myscript
, hãy viết một trình bao bọc một dòng exec sudo /path/to/myscript "$@"
. Xem Cho phép setuid trên các tập lệnh shell , đặc biệt là câu trả lời của Maciej Piechotka về việc sử dụng sudo và thảo luận chung hơn của tôi về các chương trình setuid .
sudo
.