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 foo
dan sudo
. groups
perintah output adalah:
foo sudo
Hapus pengguna foo
dari sudo
grup: gpasswd -d foo sudo
setelah ini, pengguna foo
tidak dapat menjalankan perintah dengan sudo.
Edit file sudoers. Gunakan perintah ini:
sudo visudo -f /etc/sudoers.d/foo
Tetapkan foo
izin pengguna , misalnya:
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
Ini berarti bahwa pengguna foo
dapat menjalankan perintah apa pun di direktori /usr/bin/
kecuali passwd
dan su
perintah. Catatan: Jika pengguna foo
ingin mengubah kata sandi, dapat menjalankan passwd
perintah tanpa sudo
.
Contoh lain dari foo
izin pengguna :
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
Ini berarti bahwa pengguna foo
dapat 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_Aliases
dan membuat "tingkat izin". Anda dapat menemukan contoh yang berguna di bagian CONTOH manual sudoers , dan di sini ada tautan berguna tentang cara menggunakan sudoers.