เดอะ ซูโดเออร์
คู่มือยังมีทั้งส่วนวิธีนโยบายที่เหมาะสมในการ /etc/sudoers
ไฟล์คอนฟิกูเรชัน (หรือแน่นอน ไฟล์นโยบายดรอปอินที่มีให้) สามารถนำเสนอได้อย่างจำกัด ป้องกันการหลบหนีของเปลือก กับ ข้อจำกัด
และ NOEXEC
ตัวเลือก.
นั่นอาจเป็นเรื่องทั่วไปมากกว่า การสร้างสคริปต์ตัวตัดคำ สำหรับยูทิลิตี้โดยเฉพาะ
จำกัด
หลีกเลี่ยงการให้ผู้ใช้เข้าถึงคำสั่งที่อนุญาตให้ผู้ใช้เรียกใช้คำสั่งโดยอำเภอใจ เอดิเตอร์จำนวนมากมีโหมดจำกัดที่ปิดการหลบหนีของเชลล์ แม้ว่า sudoedit จะเป็นทางออกที่ดีกว่าในการรันเอดิเตอร์ผ่าน sudo เนื่องจากมีโปรแกรมจำนวนมากที่นำเสนอการหลบหนีของเชลล์ การจำกัดผู้ใช้ให้อยู่ในชุดของโปรแกรมที่ไม่มีมักจะไม่สามารถทำงานได้
และ
โนเอ็ก
ระบบจำนวนมากที่สนับสนุนไลบรารีที่ใช้ร่วมกันมีความสามารถในการแทนที่ฟังก์ชันไลบรารีเริ่มต้นโดยชี้ตัวแปรสภาพแวดล้อม (โดยปกติคือ LD_PRELOAD) ไปยังไลบรารีที่ใช้ร่วมกันสำรอง ในระบบดังกล่าว sudo's โนเอ็ก
สามารถใช้ฟังก์ชันการทำงานเพื่อป้องกันไม่ให้โปรแกรมที่รันโดย sudo เรียกใช้โปรแกรมอื่นๆ ได้ บันทึก, ... ...
การเปิดใช้งาน โนเอ็ก
สำหรับคำสั่ง ใช้ NOEXEC
แท็กตามที่ระบุไว้ในส่วนข้อมูลจำเพาะผู้ใช้ด้านบน นี่คือตัวอย่างอีกครั้ง:
กระท่อมแอรอน = NOEXEC: /usr/bin/more, /usr/bin/vi
สิ่งนี้ทำให้ผู้ใช้ aaron สามารถเรียกใช้ได้ /usr/bin/อื่นๆ
และ /usr/bin/vi
เมื่อเปิดใช้งาน noexec สิ่งนี้จะป้องกันไม่ให้คำสั่งทั้งสองนั้นดำเนินการคำสั่งอื่น (เช่นเชลล์)
ดังนั้นในตัวอย่างของคุณ:
จอห์น ALL=NOEXEC:NOPASSWD: /usr/bin/apt,/usr/bin/apt-get
ควรจะเพียงพอที่จะอนุญาตให้ผู้ใช้ จอห์น
วิ่ง ฉลาด
และ ฉลาดรับ
ด้วยสิทธิ์ขั้นสูง โดยไม่ต้องถามรหัสผ่านและไม่มีความสามารถในการใช้ shell Escape หรือกลอุบายอื่น ๆ ที่เกินขอบเขตอำนาจของเขา
โปรดทราบว่าการทำเช่นนั้นอาจมีผลลัพธ์ที่ไม่ได้ตั้งใจเช่นกัน ตัวอย่างเช่น
หลังจากติดตั้งบริการใหม่ apt อาจไม่สามารถเริ่มบริการที่เกี่ยวข้องได้