มีคำแนะนำสองสามข้อพร้อมเบาะแสเกี่ยวกับวิธีการบรรลุผลสำเร็จ สำหรับฉันแล้วดูเหมือนว่า เริ่มต้นใหม่
คำสั่งของ Elasticsearch ไม่ควรต้องการสิทธิ์รูท อย่างน้อยก็ในกรณีการใช้งานของฉัน
โดยทั่วไป ในกรณีที่บริการ ES หยุดทำงาน ฉันไม่ต้องการให้ผู้ใช้โปรแกรมมีหน้าที่รับผิดชอบในการรีสตาร์ทโปรแกรม และหลังจากตรวจพบว่าบริการไม่ได้ใช้งาน/ไม่ทำงานด้วยเหตุผลบางประการ ควรลองเริ่มต้นใหม่
ดูเหมือนจะมีวิธีปรับแต่งการอนุญาตเหล่านี้โดยใช้ไฟล์ ซูโด วิซูโด
แต่ฉันยังไม่ชัดเจนว่าต้องทำอย่างไร: ฉันต้องการอนุญาตให้ผู้ใช้ทุกคนทำคำสั่งเดียวของ systemctl
:
systemctl รีสตาร์ท elasticsearch
ไฟล์ /etc/sudoers.tmp ซึ่งขึ้นมาหลังจากนั้น ซูโด วิซูโด
ประการแรกกล่าวว่า "โปรดพิจารณาเพิ่มเนื้อหาในเครื่องใน /etc/sudoers.d/ แทนที่จะแก้ไขไฟล์นี้โดยตรง" ไฟล์ทั้ง 3 ไฟล์ที่อยู่ในไดเร็กทอรีนั้นดูเหมือนจะเป็นไฟล์ไบนารี
ประการที่สอง มันแบ่งออกเป็นส่วนต่างๆ ซึ่งฉันค่อนข้างงง: "ข้อมูลจำเพาะนามแฝงของโฮสต์/ผู้ใช้/Cmnd" ฯลฯ ฉันได้ดูที่หน้าคนสำหรับ SUDOERS แล้ว แต่สิ่งนี้ส่วนใหญ่ทำให้ฉันทุกคนตระหนักดีว่าฉันโง่เขลาเพียงใด .
มีอย่างอื่น: เมื่อคำสั่งที่ต้องการ ซูโด
(แม้ว่าคำสั่งจะไม่ได้ขึ้นต้นด้วยคำว่า "sudo" ก็ตาม) รันโดยใช้ subprocess.run
ไดอะล็อกจะปรากฏขึ้นใน Linux ว่า "กรุณาป้อนรหัสผ่าน" หากปรากฎว่าระบบไม่ได้รับการกำหนดค่าให้อนุญาต systemctl รีสตาร์ท elasticsearch
เพื่อดำเนินการโดยใครก็ตาม ฉันต้องการตรวจจับสิ่งนั้นและส่งข้อความที่เหมาะสม แทนที่จะให้กล่องโต้ตอบนี้ปรากฏขึ้นเพื่อขอรหัสผ่านสิทธิ์รูท มีวิธีตรวจจับสิ่งนั้นหรือไม่? ...หรืออาจสกัดกั้นระบบก่อนที่จะถามรหัสผ่านของสิทธิ์รูท