ฉันมีแอปพลิเคชั่น GUI ที่จำเป็นต้องเรียก daemon (เขียนด้วยภาษา Python) ด้วยสิทธิ์ superuser ฉันต้องการทำสิ่งนี้โดยไม่แจ้งให้ผู้ใช้ใส่รหัสผ่าน
เนื่องจาก daemon เป็นสคริปต์ฉันไม่สามารถตั้งค่าบิต SUID ได้โดยตรง ฉันสามารถเขียนตัวห่อหุ้ม C สำหรับสิ่งนี้ แต่ฉันไม่อยากประดิษฐ์พวงมาลัยใหม่โดยเฉพาะเมื่อความผิดพลาดในส่วนของฉันอาจนำไปสู่ความปลอดภัยของระบบที่ถูกบุกรุกอย่างรุนแรง
สิ่งที่ฉันทำตามปกติในสถานการณ์นี้คือการเพิ่มบรรทัด/etc/sudoers
ที่อนุญาตให้ผู้ใช้เรียกใช้ daemon ในฐานะรูทโดยไม่มีรหัสผ่านโดยใช้คำสั่ง NOPASSWD ทำงานได้ดีจากบรรทัดคำสั่ง อย่างไรก็ตามเมื่อฉันทำสิ่งนี้จาก GUI pkexec
กล่องโต้ตอบจะปรากฏขึ้นเพื่อขอรหัสผ่านของผู้ใช้ มันดูเหมือนว่าบน Ubuntu, โทรไปsudo
จาก GUI pkexec
ที่มีอย่างใดถูกขัดขวางโดย
มีวิธีที่สะอาดรอบนี้หรือไม่? ฉันค่อนข้างจะไม่ต้องจัดการกับความยุ่งยากของสคริปต์ setuid
sudo somecommand
กล่องโต้ตอบที่ปรากฏขึ้นเป็นpkexec
กล่องโต้ตอบรหัสผ่านไม่ว่าจะมีนโยบาย sudoers หรือไม่ก็ตามที่อนุญาตให้เรียกใช้งานโปรแกรมได้