ไวยากรณ์ sudoers ที่เหมาะสมในการเพิ่มผู้ใช้คืออะไร?


50

ตามความเห็นใน/etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

คำถามที่เกี่ยวข้องสองข้อของฉัน:

  1. ALL=(ALL) ALLค่าเฉลี่ยในบรรทัดต่อไปนี้คืออะไร:

    root  ALL=(ALL)   ALL
    
  2. ฉันทดสอบสองบรรทัดนี้แล้ว แต่ฉันไม่สามารถเข้าใจได้ว่ามันแตกต่างกันอย่างไร

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

ฉันอ่านคู่มือแล้ว แต่ข้อกำหนดทางไวยากรณ์ยากที่จะติดตาม ฉันได้รับแล้วว่าชิ้น(ALL) ALLส่วนนั้นเป็นข้อกำหนดของคำสั่งและแท็ก แต่ฉันก็ยังไม่สามารถเข้าใจได้

คำตอบ:


91

หมายเหตุ:ฉันกำลังตอบ1.เนื่องจากอิกนาชิโอตอบแล้ว 2 .

ในsudoรายการต่อไปนี้:

superadm  ALL=(ALL)   ALL

มีสี่ฟิลด์:

  • คนแรกระบุผู้ใช้ที่จะได้รับสิทธิ์สำหรับบางคำสั่ง
  • ส่วนที่สองไม่ค่อยถูกใช้ เป็นรายการชื่อโฮสต์ที่รายการ sudo นี้จะมีผลบังคับใช้ เกี่ยวกับการตั้งค่ามาตรฐานเพียงหนึ่งโฮสต์ที่เกี่ยวข้อง (localhost) ALLเพื่อให้ข้อมูลนี้มักจะเป็นซ้ายเป็น
  • สี่เขตคือรายการของคำสั่งที่superadmจะสามารถที่จะทำงานด้วยการยกระดับสิทธิ์ ALLหมายถึงคำสั่งทั้งหมด มิฉะนั้นให้ใช้รายการคำสั่งที่คั่นด้วยเครื่องหมายจุลภาค
  • เขตข้อมูลที่สาม (หนึ่งที่เขียน(…)ว่าเป็นตัวเลือก) ระบุผู้ใช้ (และกลุ่ม) superadmผู้ใช้จะสามารถเรียกใช้คำสั่งต่อไปนี้เป็น ALLหมายความว่าพวกเขาสามารถเลือกอะไรก็ได้ (ไม่ จำกัด ) (root)มันข้อมูลนี้ถูกละไว้ก็หมายความว่าเช่นเดียวกับ

ตัวอย่าง:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

ที่นี่alanได้รับอนุญาตให้เรียกใช้สองคำสั่ง/bin/lsและ/bin/killเป็นroot(หรือbin) อาจมีสิทธิ์เพิ่มเติมoperatorหรือsystemกลุ่ม

ดังนั้นalanอาจเลือกที่จะทำงานlsในฐานะbinผู้ใช้และด้วยoperatorสิทธิ์ของกลุ่มดังนี้:

sudo -u bin -g operator /bin/ls /whatever/directory

ถ้าถูกละไว้ก็เช่นเดียวกับ-u -u rootหาก-gไม่ระบุจะไม่ได้รับสิทธิ์เพิ่มเติมสำหรับกลุ่ม


1
นั่นอาจเป็นคำตอบที่ดีที่สุดเท่าที่เคยมีมา ...
David Betz

1
ฉันสังเกตเห็นว่าอักขระขึ้นบรรทัดใหม่\nมีผลบังคับใช้ในตอนท้ายของรายการใน sudoers หรือ /etc/sudoers.d/your_file_name
ramonrails

นอกจากนี้คุณสามารถใช้อักขระตัวแทนในชื่อโฮสต์ชื่อพา ธ และอาร์กิวเมนต์บรรทัดคำสั่ง กดไลค์/bin/cat /var/log/messages.?หรือ/bin/ls /var/log/*ข้อมูลเพิ่มเติมที่นี่
อเล็กซ์

9

จากsudoers(5)หน้าคนส่วนDESCRIPTIONส่วนย่อยRunas_Spec :

Runas_List แรกที่บ่งชี้ว่าผู้ใช้คำสั่งอาจจะใช้เป็นทางsudoของ-uตัวเลือก

...

หากไม่มีการระบุ Runas_Spec คำสั่งอาจถูกเรียกใช้rootและอาจไม่มีการระบุกลุ่ม

ดังนั้นจึงมีความแตกต่างไม่ทำงานเมื่อพยายามที่จะเรียกใช้คำสั่งเป็นrootเช่นเมื่อไม่ได้ใช้ด้วย-u sudoความแตกต่างสำคัญเมื่อพยายามเรียกใช้คำสั่งในฐานะผู้ใช้รายอื่น หลังจะป้องกันสิ่งนี้ แต่อดีตจะอนุญาต

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