Umumnya, entri sudoers yang dibahas pada tutorial-tutorial, seringnya hanya membahas penambahan entri sudoers biasa, alias memungkinkan user untuk mengeksekusi semua perintah sebagai root.
Pada artikel kali ini, saya akan menjelaskan bagaimana membuat entri sudoers untuk memungkinkan user terkait untuk bisa mengeksekusi perintah yang ditentukan sebagai user lain. Contoh kasus dimana hal ini sangat bermanfaat adalah ketika ada monitoring agent seperti Zabbix yang biasanya berjalan sebagai user tertentu (zabbix), yang memerlukan izin untuk menjalankan suatu perintah sebagai user lain tetapi tidak sampai diberi akses super user.
Sintaks Dasar File Sudoers
Pada dasarnya, file sudoers memiliki berbagai “spesifikasi” untuk berbagai tujuan seputar sudo (bisa dilihat via man sudoers
). Tetapi yang akan dibahas disini hanya seputar User specification, yaitu bagian inti yang menentukan tentang siapa yang bisa menjalankan apa.
|
|
Ada 3 bagian inti:
- penentuan user/group
- host dan user dan/atau group target
- list perintah
Poin no.1 adalah user/group yang hendak menjalankan perintah. Kemudian no.2 adalah user/group dimana perintah tersebut akan dijalankan. Dan no.3 tentu daftar perintah yang ingin diizinkan, dipisahkan dengan koma.
Mengenai bagian HOST, pada umumnya cukup diset ke ALL
, alias diizinkan dijalankan ke semua host. Kemudian pada bagian user/group target, bisa sekedar menuliskan usernya saja, groupnya saja atau keduanya.
Jika ingin menjalankan perintah terkait tanpa perlu memasukkan password, maka sebelum LIST perintah, berikan NOPASSWD:
.
Contoh:
|
|
Yang terakhir, pada bagian LIST, perintah yang dimasukkan perlu ditulis secara lengkap full path-nya. Misal, cp
harus /usr/bin/cp
; rm
harus /usr/bin/rm
dan seterusnya. Sehingga, contoh sebelumnya menjadi:
|
|
Contoh kasus
Mari kita gunakan contoh skenario berikut: kita ingin memonitor sesuatu pada instance Zimbra kita menggunakan Zabix active agent. Perintah yang perlu dijalankan adalah dibawah ini:
|
|
Perintah diatas hanya bisa dijalankan sebagai user zimbra
saja dan monitoring agent yang digunakan, berjalan sebagai user zabbix
. Sehingga, user zabbix
perlu untuk bisa menjalankan perintah tersebut sebagai user zimbra
. Maka, perintah yang akan dijalankan user zabbix
menjadi:
|
|
Dengan spesifikasi diatas, maka entri sudoers yang diperlukan adalah sebagai berikut:
|
|
Kenapa ada /bin/bash -c
?
Hal tersebut disebabkan karena ketika suatu perintah dijalankan melalui sudo
, maka perintah tersebut akan dijalankan dari bash -c
(atau shell lain). Pada kasus ini, shell dari user zimbra
adalah bash
.
Kemudian, entri tersebut disimpan pada file /etc/sudoers.d/zabbix
. Untuk memverifikasinya, jalankan:
|
|
Jika menghasilkan output: sudoers: parsed OK
maka tidak ada masalah pada file sudoers tersebut.
Disarankan juga untuk mengedit file sudoers tersebut menggunakan perintah: visudo -f /etc/sudoers.d/zabbix
Dengan demikian, jika terjadi kekeliruan sintaks, maka semua modifikasi akan dibatalkan agar tidak membuat fungsi sudo rusak.
Semoga bermanfaat, barakallahufiikum.