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