Sudo kullanıcıdan bir komutu engelleme


10

Kök şifremi değiştirmek için bir yöneticiye ihtiyacım yok. Herhangi bir sudo kullanıcısının bu komutu yürütmesini istemiyorum:

sudo passwd $root

Aşağıdaki komutu kullanarak sudoers dosyasında denedim:

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

Nasıl engelleyebilirim?


Sisteminizde birden fazla sudo kullanabilen kullanıcı olduğu anlamına mı geliyor? Veya başka bir şey? Lütfen yeni bilgiler sağlamak için soruyu düzenleyin .
edwin

Yanıtlar:


15

Sudoers kılavuzuna göre :

   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).

Bu yüzden sudoers politikanız çalışmıyor.

Kullanıcının root izni almasını ve şifresini değiştirmesini önlemek istiyorsanız, şu prosedürü deneyin:

  • Sudo kullanıcılarınızın bu yönergeyi içerdiğini varsayarsak:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • Kullanıcı adınız olduğunu varsayarsak foo, grupları foove sudo. groupskomut çıkışı:

    foo sudo
    
  • Kullanıcıyı sil foogelen sudogruptan: gpasswd -d foo sudoBundan sonra, kullanıcı foosudo ile herhangi bir komutu çalıştıramazsınız.

  • Sudoers dosyasını düzenleyin. Bu komutu kullanın:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Kullanıcı fooiznini tanımlayın , örneğin:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    Bu, kullanıcının foodizinde ve command /usr/bin/dışında tüm komutları çalıştırabileceği anlamına gelir . Not: Kullanıcı şifresini değiştirmek isterse, komutu olmadan çalıştırabilirsiniz .passwdsufoopasswdsudo

  • Kullanıcı fooizninin başka bir örneği :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    Bu, kullanıcının foodizinde herhangi bir komutu çalıştırabileceği /usr/bin/ve TÜM makinelerde root dışında herhangi birinin şifresini değiştirmesine izin verildiği anlamına gelir .

Cmnd_Aliases"İzin düzeyleri" tanımlayıp oluşturarak komut gruplarını tanımlayabilirsiniz . Sudo kullanıcı el kitabının ÖRNEK bölümünde yararlı örnekler bulabilirsiniz ve burada sudo kullanıcılarının kullanımına ilişkin faydalı bir bağlantı bulunmaktadır .


foo ALL=/usr/bin/*, !/usr/bin/passwdNeden böyle olduğunu bilmem gerekiyordu ?
clurect

-1

komut takma adını şu yolla ekle visudo:

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

yoluyla kısıtlama ekleyin visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

nopasswdgroup adlı gruba kullanıcı ekle:

usermod -aG nopasswdgroup nopasswduser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.