Câu trả lời:
Câu trả lời ngắn:
Sử dụng visudo
, thêm phần sau vào tệp sudoers của bạn, thay thế tên người dùng bằng tên người dùng phù hợp:
username ALL = /etc/init.d/apache2
Nếu bạn muốn không phải nhập mật khẩu trước khi thực hiện việc này, hãy sử dụng như sau:
username ALL = NOPASSWD: /etc/init.d/apache2
Sau này, người dùng 'tên người dùng' có thể thực thi sudo /etc/init.d/apache2 start
(hoặc dừng, khởi động lại, v.v.)
Câu trả lời dài: Bạn có thể muốn thiết lập một người dùng riêng cho việc này nếu bạn chưa có, sau đó định cấu hình tệp / etc / sudoers để cho phép người dùng hoặc nhóm thực hiện lệnh bạn muốn.
Ví dụ: để cho phép người dùng 'ben' thực thi tất cả các lệnh dưới dạng root nhắc mật khẩu, bạn sẽ làm như sau:
ben ALL= ALL
Để cho phép 'ben' chỉ thực hiện một lệnh (như nói, rm
), bạn sẽ làm như sau:
ben ALL= /bin/rm
Nếu bạn đang chạy tập lệnh với tư cách là người dùng và không muốn nhắc mật khẩu, bạn sẽ muốn sử dụng tùy chọn 'NOPASSWD' như vậy:
ben ALL=NOPASSWD: /bin/commandname options
Bạn có thể làm điều tương tự cho các nhóm bằng cách thêm tiền tố tên nhóm với dấu phần trăm, như vậy:
%supportstaff ALL= NOPASSWD: /bin/commandname
visudo
lệnh thực hiện kiểm tra an toàn trên các chỉnh sửa của bạn, do đó bạn không phá vỡ sudo
/ su
lệnh một cách tình cờ: unix.stackexchange.com/a/27595/61349
Câu trả lời ngắn gọn: sudo.
Cuộc gọi sẽ trông giống như sau: sudo /etc/init.d/apache2 restart
Dễ nhất là sử dụng visudo
để thiết lập tệp / etc / sudoers. Xem man sudoers
và man visudo
để biết chi tiết.
Bạn cũng có thể thực hiện điều này bằng cách viết một trình bao bọc cho apache2ctl, gán quyền sở hữu nhóm cho một nhóm quản trị web và thiết lập bit suid. Đây là một giải pháp ít chung hơn so với visudo, nhưng cho phép các giới hạn tùy chỉnh về khả năng của người dùng và kiểm tra lỗi.
Tôi đã viết công cụ này cho nhu cầu của riêng tôi và đã chia sẻ nó trên github: https://github.com/josiahjohnston/ltd_apache2ctl
username
được giới hạn trong một tập hợp con của các tham số? Nóistart
restart
nhưng không đượcstop
?