Apakah mungkin memberikan sudo akses hanya ke perintah tertentu?

24

Latar Belakang: Saya memiliki mesin pengembangan dengan pengaturan LAMP. Beberapa pengembang akan mengakses mesin dari waktu ke waktu. Setiap kali mereka membuat beberapa perubahan pada file konfigurasi mereka perlu me-restart server apache menggunakan sudo service apache restartatausudo /etc/init.d/apache2 restart

Pertanyaan:

Yang saya inginkan sekarang adalah bahwa setiap pengembang yang mengakses mesin tidak memiliki akses sudo untuk semuanya. Sebaliknya, ia seharusnya hanya dapat menjalankan serviceperintah menggunakan sudo dan tidak ada yang lain. Apakah mungkin untuk melakukan itu?

Ankit
sumber

Jawaban:

35

Iya nih.

Buat grup baru, web (sebut saja apa yang Anda inginkan)

sudo addgroup web

Tambahkan pengembang Anda ke grup web (gunakan nama login mereka).

sudo adduser your_developer_user web

Kemudian jalankan sudo visudo -f /etc/sudoers.d/somefile(gunakan nama yang bermakna, bukan somefile).

Tambahkan dalam satu baris (gunakan path lengkap dari perintah):

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

Pengembang kemudian dapat berjalan

sudo service apache

menggunakan kata sandi login mereka.

JANGAN menambahkan pengguna admin Anda ke grup web.

Lihat man sudoers untuk informasi tambahan

Harimau kumbang
sumber
1
@Ankit: dengan begitu para pengguna webgrup dapat memulai / menghentikan layanan apa pun, dan ini bukan yang Anda inginkan, saya pikir. Solusinya adalah menempatkan perintah yang tepat (juga dengan parameter) di /etc/sudoers.
enzotib
@enzotib dapatkah saya melakukan itu dengan maksud saya sehingga perintah yang baru /usr/bin/service apache2adalah itu?
Ankit
3
@Ankit:/usr/bin/service apache2 *
enzotib
Ini juga seharusnya/usr/sbin/service
Erfan