Có thể cấp quyền truy cập sudo cho một lệnh cụ thể không?


24

Bối cảnh: Tôi có một máy phát triển với thiết lập LAMP. Thỉnh thoảng một số nhà phát triển sẽ truy cập vào máy. Mỗi khi họ thực hiện một số thay đổi trong tệp cấu hình, họ sẽ cần khởi động lại máy chủ apache bằng cách sử dụng sudo service apache restarthoặcsudo /etc/init.d/apache2 restart

Câu hỏi:

Điều tôi muốn bây giờ là mọi nhà phát triển truy cập vào máy không có quyền truy cập sudo vào mọi thứ. Thay vào đó, anh ấy / cô ấy chỉ có thể chạy servicelệnh bằng sudo và không có gì khác. Có thể làm điều đó?

Câu trả lời:


35

Vâng.

Tạo một nhóm mới, web (gọi nó là những gì bạn muốn)

sudo addgroup web

Thêm (các) nhà phát triển của bạn vào nhóm web (sử dụng tên đăng nhập của họ).

sudo adduser your_developer_user web

Sau đó chạy sudo visudo -f /etc/sudoers.d/somefile(sử dụng một tên có ý nghĩa thay vì somefile).

Thêm vào một dòng (sử dụng đường dẫn đầy đủ của lệnh):

%web ALL=(ALL) /usr/bin/service apache2 *

Các nhà phát triển sau đó có thể chạy

sudo service apache

sử dụng mật khẩu đăng nhập của họ.

KHÔNG thêm người dùng quản trị của bạn vào nhóm web.

Xem người đàn ông sudoers để biết thêm thông tin


1
@Ankit: theo cách đó, người dùng của webnhóm có thể bắt đầu / dừng bất kỳ dịch vụ nào và tôi nghĩ đây không phải là điều bạn muốn. Giải pháp nên đặt lệnh chính xác (cũng với tham số) /etc/sudoers.
enzotib

@enzotib tôi có thể làm điều đó với ý nghĩa của tôi vì vậy lệnh mới sẽ /usr/bin/service apache2là nó?
Ankit

3
@Ankit:/usr/bin/service apache2 *
enzotib

Điều này cũng có thể là/usr/sbin/service
Erfan
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.