Blokir perintah dari pengguna sudo

10

Saya tidak memerlukan administrator untuk mengubah kata sandi root saya. Saya tidak ingin pengguna sudo menjalankan perintah ini:

sudo passwd $root

Saya sudah mencobanya di file sudoers menggunakan perintah berikut:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

Bagaimana saya bisa memblokirnya?

Magesh Arumugam
sumber
Apakah maksud Anda Anda memiliki lebih dari satu pengguna yang bisa menggunakan sudo di sistem Anda? Atau sesuatu yang lain? Harap edit pertanyaan untuk memberikan informasi baru.
edwin

Jawaban:

15

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.

Lety
sumber
Saya harus foo ALL=/usr/bin/*, !/usr/bin/passwdtahu mengapa itu terjadi?
clurect
-1

tambahkan perintah alias melalui visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

tambahkan batasan melalui visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

tambahkan pengguna ke grup bernama nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
shcherbak
sumber