Menurut panduan sudoers :
It is generally not effective to "subtract" commands from ALL using the
’!’ operator. A user can trivially circumvent this by copying the
desired command to a different name and then executing that. For
example:
bill ALL = ALL, !SU, !SHELLS
Doesn’t really prevent bill from running the commands listed in SU or
SHELLS since he can simply copy those commands to a different name, or
use a shell escape from an editor or other program. Therefore, these
kind of restrictions should be considered advisory at best (and
reinforced by policy).
Inilah sebabnya mengapa kebijakan sudoers Anda tidak berfungsi.
Jika Anda ingin mencegah pengguna untuk mendapatkan izin root dan mengubah kata sandinya, coba prosedur ini:
Dengan asumsi sudoers Anda mengandung arahan ini:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Dengan asumsi nama pengguna Anda adalah foo, grupnya adalah foodan sudo. groupsperintah output adalah:
foo sudo
Hapus pengguna foodari sudogrup: gpasswd -d foo sudosetelah ini, pengguna footidak dapat menjalankan perintah dengan sudo.
Edit file sudoers. Gunakan perintah ini:
sudo visudo -f /etc/sudoers.d/foo
Tetapkan fooizin pengguna , misalnya:
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
Ini berarti bahwa pengguna foodapat menjalankan perintah apa pun di direktori /usr/bin/kecuali passwddan superintah. Catatan: Jika pengguna fooingin mengubah kata sandi, dapat menjalankan passwdperintah tanpa sudo.
Contoh lain dari fooizin pengguna :
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
Ini berarti bahwa pengguna foodapat menjalankan perintah apa pun di direktori /usr/bin/dan diizinkan untuk mengubah kata sandi siapa pun kecuali untuk root pada SEMUA mesin.
Anda dapat mendefinisikan kelompok perintah dengan menetapkan Cmnd_Aliasesdan membuat "tingkat izin". Anda dapat menemukan contoh yang berguna di bagian CONTOH manual sudoers , dan di sini ada tautan berguna tentang cara menggunakan sudoers.