Làm thế nào để có được một chương trình chạy với quyền root mà không cần sử dụng su hoặc sudo


8

Tôi có một bashtậ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:


9

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.


Rất vui, tôi chỉ đăng một liên kết đến đó. Câu trả lời của Hemant là một giải pháp tốt
Michael Mrozek

Ruby sẽ được tính là một kịch bản shell?
Stefan

1
@Stefan Vâng, bất cứ điều gì được chạy qua một trình thông dịch đều có, bởi vì đó không phải là chính kịch bản được chạy, đó là trình thông dịch ruby, không phải là setuid. Bạn cần một nhị phân thực tế để sử dụng setuid
Michael Mrozek

2
Tôi ước tôi có thể bỏ phiếu này, nhưng tiếc là tôi thiếu 25 điểm danh tiếng. Để người dùng bình thường chạy tập lệnh bash với quyền root là ý tưởng RẤT BẮT ĐẦU, trừ khi bạn biết chính xác những gì bạn đang làm (và nếu bạn phải hỏi cách thực hiện, bạn không nên làm). Nếu OP đăng kịch bản của anh ấy ở đây, có lẽ tôi sẽ tìm thấy ít nhất 3 cách để khai thác nó. Có một lý do gần như tất cả các bản phân phối làm cho điều này khó khăn.
Kim

Một trong những nguyên tắc chính của Unix là: "Cung cấp cho người dùng bất kỳ cơ hội nào để tự bắn vào chân mình" :-)
fschmitt

1

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 sudothảo luận chung hơn của tôi về các chương trình setuid .


Toàn bộ ý tưởng là không phải sử dụng sudo.
Alexej Magura

@AlexejMagura Sudo là giải pháp dễ nhất. Điều này khó thực hiện nếu không có sudo (trừ khi bạn sẵn sàng giải quyết một giải pháp không an toàn, trong trường hợp đó bạn cũng có thể cung cấp cho mọi người mật khẩu gốc).
Gilles 'SO- ngừng trở nên xấu xa'
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.