มี gksudo ที่เป็นกลางบนเดสก์ท็อปหรือไม่


17

มีเครื่องมือต่าง ๆ สำหรับเดสก์ท็อปต่าง ๆ ที่มีวัตถุประสงค์เพื่อเรียกใช้โปรแกรมประยุกต์แบบกราฟิกเป็นราก gksudo, kdesudo, empowerฯลฯ ...

แต่ถ้าฉันเขียนสคริปต์ที่สามารถใช้กับเดสก์ท็อป Linux เครื่องใดก็ได้ มีxdg-sudoอะไรบ้างไหม .. ? มาตรฐานสำหรับการเข้าถึง sudo ในสภาพแวดล้อมเดสก์ท็อป?

คำตอบ:


16

การทำตามคำแนะนำ @Tachyons ฉันค้นคว้าเกี่ยวกับpkexecมันมากและมันยอดเยี่ยมมาก !

  • มันเป็นส่วนหนึ่งของPolicyKitซึ่งเป็นแพ็คเกจที่ใช้กันอย่างแพร่หลาย
  • โฮสต์และสนับสนุนโดยfreedesktop.org
  • ค่าเริ่มต้นในGnome , Unity , MATE , Cinnamon , KDE , LXDEและXFCEและอื่น ๆ
  • ทำงานผ่าน D-Bus ดังนั้นจึงเป็นเดสก์ท็อปที่เป็นกลางโดยสมบูรณ์พร้อมด้วยโปรโตคอลที่กำหนดไว้อย่างดี
  • ใน DEs จำนวนมากมันถูกใช้ในบริการหลายอย่างเช่นหน้าจอเข้าสู่ระบบ, ปิด / รีสตาร์ท, การจัดการดิสก์ (udisks / automount) และอื่น ๆ

ใช่แล้วมันเป็นไปตามข้อกำหนดทั้งหมดและฉันคิดว่ามันเป็นสิ่งที่ใกล้เคียงที่สุดที่"universal gksudo"ได้

ที่กล่าวว่าpkexecเป็นส่วนหน้าบรรทัดคำสั่งเพื่อ PolicyKit มีโหมดการทำงานพื้นฐาน 2 โหมด:

  • เพียงเรียกใช้ตามที่คุณต้องการsudoและคุณจะได้รับพรอมต์ GUI ที่ดี:

    $ pkexec rm -rf /

พรอมต์ pkexec GUI

  • หรือสร้างไฟล์การอนุญาต PolicyKit สำหรับแอปพลิเคชันของคุณ, ปล่อยมันลงไป/usr/share/polkit-1/rules.dและมันจะช่วยให้มีการปรับแต่งและตัวเลือกที่เกี่ยวข้องกับความปลอดภัยเช่นการเข้าถึงรูทสำหรับการกระทำบางอย่างเท่านั้นไม่จำเป็นต้องใช้รหัสผ่านสำหรับผู้อื่น ฯลฯ คุณสามารถปรับการตั้งค่าของคุณอย่างละเอียดด้วยความละเอียดที่น่าทึ่ง

6

วิธีทั่วไปมากขึ้นคือการเขียน "โปรแกรมผู้ช่วยเหลือ" โปรแกรมดังกล่าวจะแจ้งให้ผู้ใช้ใส่รหัสผ่าน หากคุณแน่ใจว่ามีการติดตั้ง Zenity คุณสามารถใช้งานได้ไม่เช่นนั้นคุณจะต้องเขียนโปรแกรมตัวช่วยใน Python หรืออย่างอื่นที่สามารถโต้ตอบกับ GUI ได้

อ่านsudoคู่มือสำหรับตัวเลือก-A("askpass") และ-S(stdin)

และจำไว้ว่าเมื่อคุณเรียกใช้sudoจากสคริปต์ของคุณคุณต้อง-H(บ้าน) gksudoตัวเลือกในการจำลอง

วิธีนี้ใช้ได้ดี แต่คุณต้องทดสอบโปรแกรมตัวช่วยอย่างละเอียดเพื่อให้แน่ใจว่าไม่มีข้อบกพร่อง


1
คุณต้องจัดการโทเค็น xauth ที่ส่งผ่านในโปรแกรมของคุณซึ่งไม่สำคัญ
symcbean

4

ไม่ไม่มีวิธีมาตรฐานในการรับสิทธิ์รูท (หรือผู้ใช้รายอื่น)

ถ้าคุณต้องการที่จะเข้ากันได้กับระบบมากที่สุดเท่าที่เป็นไปได้อย่าคาดหวัง แต่อย่างใด แต่บอกผู้ใช้ว่าเขา / เธอต้องเรียกใช้สคริปต์ของคุณในฐานะผู้ใช้เฉพาะ จากนั้นขึ้นอยู่กับผู้ใช้ / ผู้ดูแลระบบในการกำหนดค่าระบบเพื่อให้สคริปต์ของคุณทำงานในวิธีที่เหมาะสม

การให้คำแนะนำเกี่ยวกับวิธีการใช้ระบบการตรวจสอบความถูกต้องที่ใช้กันทั่วไปเช่น su, sudo และ ConsoleKit น่าจะดี


จริงสำหรับต้นปี 2009 แต่ตอนนี้polkit(อย่างเป็นทางการ PolicyKit) เป็นที่แพร่หลายมากพอที่จะถือว่าเป็นมาตรฐาน
MestreLion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.