ฉันกำลังเขียนโปรแกรมอรรถประโยชน์ขนาดเล็ก ฉันต้องการให้พยายามsudo
รันบางสิ่งหากจำเป็น
นั่นคือ: หากการอนุญาตไฟล์ไม่อนุญาตให้ผู้ใช้ปัจจุบันทำงานกับไฟล์ใดไฟล์หนึ่ง (และsudo
กฎจะอนุญาต) ฉันต้องการให้ยูทิลิตี้ของฉันsudo
ทำงานบางอย่างในฐานะเจ้าของไฟล์
ฉันหวังว่าจะตรวจสอบความสามารถนี้ล่วงหน้าเพราะฉันต้องการให้บันทึกระบบไม่เต็มไปด้วยเสียงรบกวนจากsudo
ความพยายามที่ล้มเหลว ตามที่sudo
รายงานเมื่อเกิดความล้มเหลว: "เหตุการณ์นี้จะถูกรายงาน"
ดังนั้นฉันหวังว่าจะตรวจสอบแบบเป็นโปรแกรม: สามารถuser <x>
ทำงานcommand <y>
ผ่านได้sudo
หรือไม่
นี่คือปัญหา: ในขณะที่/etc/sudoers
มีการแมปนั้นมันเป็นเจ้าของรากและไม่สามารถอ่านได้โดยผู้ใช้ปกติ
ฉันกำลังพิจารณาที่จะวางไข่ subprocess เพื่อให้ทำงานsudo -l
(ซึ่งเป็นคำสั่งที่ผู้ใช้ปัจจุบันสามารถเรียกใช้ sudo-run) ฉันจะแยกผลลัพธ์ของสิ่งนี้ อย่างไรก็ตามนี่ดูเหมือนจะเปราะบางเล็กน้อย เอาต์พุตมีข้อมูลที่ฉันต้องการ แต่ดูเหมือนว่ามันถูกออกแบบมาเพื่อให้มนุษย์อ่าน (ไม่ใช่สำหรับการใช้แบบเป็นโปรแกรม) ฉันไม่ทราบว่ามีการรับประกันว่าผลลัพธ์จะเป็นไปตามรูปแบบเดียวกันในอนาคตหรือข้ามแพลตฟอร์มที่แตกต่างกัน
การแยกวิเคราะห์ทางโปรแกรมมีการsudo -l
พิจารณาว่าปลอดภัยหรือไม่? หากไม่มีมีตัวเลือกที่ดีกว่านี้เพื่อพิจารณาล่วงหน้าว่าคำสั่ง sudo จะประสบความสำเร็จหรือไม่
(พื้นหลังใน X / Y: ยูทิลิตี้นี้ใช้สำหรับบัญชีบทบาทที่ จำกัด การเข้าถึงฉันคาดว่าผู้ใช้รายอื่นบางคนสามารถเลือกที่จะอนุญาตให้บัญชี จำกัด การเข้าถึงสามารถทำงานกับไฟล์ของพวกเขาผ่านกฎ sudo อย่างไรก็ตามฉันชนะ ไม่ทราบล่วงหน้าว่าผู้ใช้รายใดที่มีกฎ sudo ที่เกี่ยวข้องอยู่)