บล็อกคำสั่งจากผู้ใช้ sudo


10

ฉันไม่ต้องการให้ผู้ดูแลระบบเปลี่ยนรหัสผ่านรูทของฉัน ฉันไม่ต้องการให้ผู้ใช้ sudo ดำเนินการคำสั่งนี้:

sudo passwd $root

ฉันลองในไฟล์ sudoers โดยใช้คำสั่งต่อไปนี้:

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

ฉันจะปิดกั้นมันได้อย่างไร


คุณหมายความว่าคุณมีผู้ใช้ sudo ที่สามารถทำได้มากกว่าหนึ่งคนในระบบของคุณหรือไม่? หรืออย่างอื่น? โปรดแก้ไขคำถามเพื่อให้ข้อมูลใหม่ ๆ
edwin

คำตอบ:


15

ตามคู่มือ 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).

นี่คือเหตุผลที่นโยบาย sudoers ของคุณไม่ทำงาน

หากคุณต้องการป้องกันไม่ให้ผู้ใช้รับสิทธิ์การใช้งานรูทและเปลี่ยนรหัสผ่านลองขั้นตอนนี้:

  • สมมติว่า sudoers ของคุณมีคำสั่งนี้:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • สมมติว่าชื่อผู้ใช้ของคุณคือfooกลุ่มของเขาและfoo เอาต์พุตคำสั่งคือ:sudogroups

    foo sudo
    
  • ลบผู้ใช้ออกfooจากsudoกลุ่ม: gpasswd -d foo sudoหลังจากนี้ผู้ใช้fooจะไม่สามารถเรียกใช้คำสั่งใด ๆ ด้วย sudo

  • แก้ไขไฟล์ sudoers ใช้คำสั่งนี้:

    sudo visudo -f /etc/sudoers.d/foo
    
  • กำหนดfooสิทธิ์ผู้ใช้ตัวอย่างเช่น:

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

    ซึ่งหมายความว่าผู้ใช้fooสามารถเรียกใช้คำสั่งใด ๆ ในไดเรกทอรี/usr/bin/ยกเว้นpasswdและsuคำสั่ง หมายเหตุ: หากผู้ใช้fooต้องการที่จะเปลี่ยนรหัสผ่านของเขาสามารถเรียกใช้คำสั่งโดยไม่ต้องpasswdsudo

  • อีกตัวอย่างของการfooอนุญาตผู้ใช้:

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

    ซึ่งหมายความว่าผู้ใช้fooสามารถเรียกใช้คำสั่งใด ๆ ในไดเรกทอรี/usr/bin/และได้รับอนุญาตให้เปลี่ยนรหัสผ่านของทุกคนยกเว้นการรูทบนเครื่องทั้งหมด

คุณสามารถกำหนดกลุ่มคำสั่งโดยกำหนดCmnd_Aliasesและสร้าง "ระดับการอนุญาต" คุณสามารถพบตัวอย่างที่มีประโยชน์ในส่วนตัวอย่างของคู่มือ sudoersและนี่คือลิงค์ที่มีประโยชน์เกี่ยวกับวิธีการใช้ sudoers


ฉันต้องทำ foo ALL=/usr/bin/*, !/usr/bin/passwdคิดใด ๆ ว่าทำไมถึงเป็นเช่นนั้น
clurect

-1

เพิ่มนามแฝงคำสั่งผ่านvisudo:

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

เพิ่มข้อ จำกัด ผ่านvisudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

เพิ่มผู้ใช้ไปยังกลุ่มที่เรียกว่า nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.