แอปพลิเคชันขนาดใหญ่ต้องการในเวลาหนึ่งเพื่อทำการเขียนจำนวนเล็กน้อยไปยังไฟล์ที่ต้องการการอนุญาตรูต มันไม่ได้เป็นไฟล์จริงๆ แต่เป็นส่วนต่อประสานฮาร์ดแวร์ที่สัมผัสกับลีนุกซ์เป็นไฟล์
เพื่อหลีกเลี่ยงการให้สิทธิ์รูทแก่แอปพลิเคชันทั้งหมดฉันเขียนสคริปต์ทุบตีซึ่งทำหน้าที่สำคัญ ตัวอย่างเช่นสคริปต์ต่อไปนี้จะเปิดใช้งานพอร์ต 17 ของอินเตอร์เฟสฮาร์ดแวร์เป็นเอาต์พุต:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
อย่างไรก็ตามตามที่suid
ถูกปิดการใช้งานสำหรับสคริปต์ทุบตีในระบบของฉันฉันสงสัยว่าอะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมาย
ใช้วิธีแก้ปัญหาที่แสดงไว้ที่นี่
เรียกใช้สคริปต์ด้วย
sudo
จากแอปพลิเคชันหลักและแก้ไขรายการ sudoers ตามเพื่อหลีกเลี่ยงการต้องใช้รหัสผ่านเมื่อเรียกใช้สคริปต์ ฉันเล็กน้อยอึดอัดที่จะให้สิทธิ์ sudoecho
ไปเพียงแค่เขียนโปรแกรม C ด้วย
fprintf
และตั้งเป็น suid root ฮาร์ดโค้ดสตริงและชื่อไฟล์และตรวจสอบให้แน่ใจว่าเฉพาะ root เท่านั้นที่สามารถแก้ไขได้ หรืออ่านสตริงจากไฟล์ข้อความเช่นเดียวกันตรวจสอบให้แน่ใจว่าไม่มีใครสามารถแก้ไขไฟล์ได้วิธีแก้ปัญหาอื่นที่ไม่ได้เกิดขึ้นกับฉันและปลอดภัยกว่าหรือง่ายกว่านั้นคือวิธีที่นำเสนอข้างต้น