วิธีการรับพรอมต์รหัสผ่าน GUI sudo โดยไม่ใช้บรรทัดคำสั่ง?


10

ขณะนี้สำหรับคำสั่งทั้งหมดของฉันที่ต้องการการเข้าถึงรูตฉันต้องพิมพ์มันออกมาในบรรทัดคำสั่ง

ฉันต้องการให้ GUI แจ้งให้ฉันป้อนรหัสผ่านเมื่อจำเป็นต้องใช้ sudo แทนที่จะต้องพิมพ์คำสั่งจากบรรทัดคำสั่ง

มีวิธีใดบ้างที่จะเปิดใช้งานสิ่งนี้ ก่อนหน้านี้เดสก์ท็อป Ubuntu รุ่นหนึ่งมีคุณลักษณะนี้นอกกรอบ

Ubuntu รุ่นนี้ (ที่ฉันกำลังใช้งานอยู่) ฉันอัปเกรดจากการติดตั้งเซิร์ฟเวอร์

ฉันจะเพิ่มบัญชีผู้ใช้ของฉันถูกเพิ่มไปยังกลุ่ม sudo แล้ว ดังนั้นฉันสามารถเรียกใช้คำสั่งเช่นsudo geditหรือsudo apt-getแต่ฉันไม่สามารถติดตั้งซอฟต์แวร์ใน Ubuntu Software Center

คำตอบ:


11

TL; DR:ลองติดตั้งpolicykit-1และpolicykit-1-gnomeแพ็คเกจ

คุณอาจต้องใช้ polkit (หรือที่ชื่อว่า PolicyKit)

ยูทิลิตี้การจัดการระบบกราฟิกส่วนใหญ่ในอูบุนตูรวมถึงศูนย์ซอฟต์แวร์มักจะสามารถทำงานได้โดยไม่ต้องมีsudoอะไรเลย คุณเรียกใช้พวกเขาในลักษณะเดียวกับที่คุณเรียกใช้โปรแกรมใด ๆ

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

ดังนั้นพฤติกรรมปกติของ Software Center คือคุณสามารถเรียกใช้งานได้อย่างง่ายดายเนื่องจากsoftware-centerจะไม่แจ้งให้คุณตรวจสอบสิทธิ์ในเวลานั้น แต่เมื่อคุณบอกให้ติดตั้งหรือลบซอฟต์แวร์ซอฟต์แวร์จะแจ้งให้คุณ (กราฟิก) ตรวจสอบสิทธิ์

เสียงจากคำอธิบายของคุณเช่นระบบของคุณเริ่มต้นเป็นระบบเซิร์ฟเวอร์ Ubuntu ที่ไม่มี GUI จากนั้นคุณติดตั้ง GUI อาจเป็นแพ็กเกจpolicykit-1ติดตั้ง policykit-1และpolicykit-1-gnome ติดตั้ง policykit-1-gnomeหากคุณติดตั้ง polkit มักจะเริ่มทำงานกับ Software Center และยูทิลิตี้อื่น ๆ

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

จากนั้นคุณควรจะสามารถเรียกใช้:

software-center

(หรือเลือกศูนย์ซอฟต์แวร์แบบกราฟิกตามที่กำหนดไว้สำหรับสภาพแวดล้อมเดสก์ท็อปที่คุณติดตั้ง)

หากคุณต้องการระบบเดสก์ท็อป Ubuntu ที่ใช้งานได้ดีฉันขอแนะนำให้ติดตั้ง metapackage สำหรับ "รสชาติ" ของ Ubuntu ที่คุณต้องการเปลี่ยนระบบของคุณ โดยทั่วไปถ้าคุณต้องการปกติระบบคอมพิวเตอร์ Ubuntu ติดตั้งอูบุนตูเดสก์ทอปติดตั้ง ubuntu-desktop

sudo apt-get update
sudo apt-get install ubuntu-desktop

สิ่งนี้ควรเติมในช่องว่างต่าง ๆ เช่นไม่มี polkit ที่มาพร้อมกับการติดตั้ง GUI น้อยที่สุดบนระบบเซิร์ฟเวอร์ของคุณ ในทางกลับกันหากคุณต้องการ GUI ที่น้อยที่สุดคุณสามารถติดตั้งแพ็คเกจ polkit เหล่านั้นได้

สำหรับข้อมูลเพิ่มเติมให้ดูที่คุณใช้งานเซิร์ฟเวอร์ Ubuntu ด้วย GUI ได้อย่างไร

sudo ด้วยการตรวจสอบกราฟิก

หากคุณต้องการคำสั่งเรียกใช้ในฐานะรูท แต่ได้รับกล่องโต้ตอบการตรวจสอบสิทธิ์แบบกราฟิกสิ่งที่คุณต้องการคือgksudo( หรือgksu ) จัดทำโดยแพ็คเกจgksu ติดตั้ง gksuมันเป็น frontend sudoกราฟิกสำหรับ

โดยทั่วไปgksudoจะใช้ในการรันแอปพลิเคชันกราฟิกในฐานะที่เป็นรูท (หรือผู้ใช้อื่นนอกเหนือจากที่ผู้ใช้เรียกใช้) แต่คุณยังสามารถใช้มันเพื่อรันคำสั่งที่ไม่ใช่กราฟิกได้ด้วย - หากคำสั่งนั้นสามารถรันsudoได้

คุณสามารถเรียกใช้gksudoจากเทอร์มินัล แต่คุณไม่จำเป็นต้อง คุณสามารถเรียกใช้จากกล่องโต้ตอบAlt+ F2(เรียกใช้คำสั่ง) หรือวางไว้ในExec=บรรทัด.desktopไฟล์ (หรือวิธีอื่นใดที่คุณเรียกใช้โปรแกรมกราฟิก)

โปรดทราบว่าคุณควรพิจารณาใช้gksudoในการเรียกใช้โปรแกรมกราฟิกเป็นรากแม้ในขณะที่คุณกำลังเรียกพวกเขาจากขั้วเพราะคำสั่งเช่นsudo ...ที่...เป็นโปรแกรมกราฟิกจริงสามารถทำลายการกำหนดค่าต่อการประยุกต์ใช้ของผู้ใช้ที่ไม่ใช่รากทำงานพวกเขา (โชคดีที่สิ่งนี้สามารถแก้ไขได้) sudo geditมีชื่อเสียงโดยเฉพาะ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาsudoสำหรับการใช้งานกราฟิกและสิ่งที่ต้องทำแทนดู:

นอกจากนี้ยังมีวิธีกราฟิกที่ใช้ polkit ... สำหรับคำสั่งที่ไม่ใช่กราฟิก

gksudoทำงานได้ดีสำหรับการเรียกใช้โปรแกรมกราฟิกและไม่ใช่กราฟิก คุณน่าจะใช้มัน

แต่ทางเลือกอื่นคือการใช้ polkit แทนที่จะsudoทำงานเฉพาะกับโปรแกรมที่ไม่ใช่กราฟิกpkexecเท่านั้น

ตัวอย่างเช่นหากคุณเรียกใช้pkexec touch /root/foo.txtคุณจะได้รับแจ้งพร้อมกล่องโต้ตอบการตรวจสอบสิทธิ์แบบกราฟิกและหากการรับรองความถูกต้องสำเร็จให้touch /root/foo.txtเรียกใช้สร้าง ( หรือทำให้ใหม่ ) foo.txtใน/rootโฟลเดอร์

  • pkexecจะใช้กล่องโต้ตอบที่ไม่ใช่แบบกราฟิกซึ่งต้องใช้เทอร์มินัลในกรณีที่ไม่สามารถสร้างไดอะล็อกกราฟิก แต่สิ่งนี้ไม่น่าจะเกิดขึ้นหากคุณเรียกใช้ผ่านสิ่งอำนวยความสะดวกที่จัดทำโดยเชลล์กราฟิกหรือสภาพแวดล้อมเดสก์ท็อปของคุณ
  • เหตุใดจึงpkexecทำงานเฉพาะกับโปรแกรมที่ไม่ใช่กราฟิกเท่านั้น จริงๆแล้วมันยังรันโปรแกรมกราฟิก แต่เฉพาะเมื่อ polkit ได้รับการกำหนดค่าเป็นพิเศษเพื่อให้มัน - ซึ่งมักจะไม่ได้ทำ ดูman pkexec(และเวอร์ชันต้นน้ำพร้อมภาพหน้าจอ ) คำตอบนี้และคำตอบนั้นสำหรับรายละเอียดบางอย่างหากคุณสนใจ

sudoเทียบกับ polkit (รายละเอียดทางเทคนิคเฉพาะในกรณีที่คุณสนใจ)

ใหม่gksu/ gksudoจะใช้ polkit แทนsudoการทำงานแม้ว่ารุ่นนี้จะไม่ได้รับการยอมรับอย่างกว้างขวาง ผมส่วนใหญ่นำมาขึ้นที่จะแนะนำแฟ้มในรหัสของแหล่งที่มา (เขียนโดย Gustavo Noronha ซิลวา) ซึ่งจะอธิบายความแตกต่างที่สำคัญระหว่างและ polkit อ้างจากมันสั้น ๆ :READMEsudo

PolicyKit แก้ปัญหาของแอปพลิเคชั่นที่ต้องการสิทธิพิเศษที่สูงขึ้นโดยจัดให้มีสิ่งอำนวยความสะดวกเพื่อให้ผู้ใช้รับรองความถูกต้องของตนเองและสำหรับแอปพลิเคชันเพื่อตรวจสอบข้อมูลการรับรองความถูกต้อง แอปพลิเคชันจะต้องมีโครงสร้างในลักษณะที่การดำเนินการที่มีสิทธิพิเศษทั้งหมดจะทำโดยบริการ D-Bus ขนาดเล็ก (ควร) ซึ่งได้รับคำสั่งจากรหัส unprivileged "การกระทำ" ทั้งหมดที่ดำเนินการต้องได้รับการอนุญาตที่เหมาะสมซึ่งจัดการผ่าน Policykit

4.ทำไมต้องรักษา gksu

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

ปัญหาเหล่านี้รองรับสถานการณ์ที่ฉันเชื่อว่าคุณอยู่:

  • Software Center ออกแบบมาเพื่อใช้ polkit สำหรับการยกระดับสิทธิ์เพื่อให้การกระทำที่เฉพาะเจาะจงเท่านั้นที่จะต้องดำเนินการในฐานะรูท สำหรับสิ่งนี้มันต้องการ polkit ซึ่งหายไป (หรือเสียหาย) ในระบบของคุณ
  • เนื่องจากมันถูกออกแบบมาให้ใช้ polkit จึงไม่มีตัวเรียกใช้งานก่อนหน้าเพื่อเริ่มใช้งาน Software Center ในฐานะรูท polkit obviates จำเป็นต้องเรียกใช้เครื่องมือการจัดการแบบกราฟิกเป็น root ส่วนใหญ่เวลา
  • แต่บางครั้งคุณจำเป็นต้องเรียกใช้โปรแกรมกราฟิกแบบรูท ในกรณีที่คุณสามารถใช้/gksu (... ซึ่งในที่สุดอาจใช้ polkit เบื้องหลัง - แต่ปัจจุบันใน Ubuntu เป็นแบบดั้งเดิมที่ใช้)gksudo
    gksudosudo

1
สวัสดี Eliah ใช่มันเป็นเซิร์ฟเวอร์ที่ไม่มี GUI และฉันเพิ่งลองใช้ Ubuntu GUI ฉันรันคำสั่ง sudo apt-get install ubuntu-desktop im ไม่แน่ใจว่าติดตั้งชุดนโยบายหรือไม่ จะลองติดตั้งใหม่เลยล่ะ กำลังอัพเกรดจาก 12.04 เป็น 14.04
ฌอน

ฉันพบสถานการณ์ที่มีแอปพลิเคชัน GUI ที่ฉันต้องการเรียกใช้ตามปกติ (ไม่ใช่รูท) แต่ก็ต้องอ่านจากพอร์ตอนุกรมที่เป็นเจ้าของโดยรูท การไม่สามารถให้สิทธิ์โปรแกรมนี้เพียงครั้งเดียวนั้นน่ารำคาญจริงๆ (อีกนัยหนึ่งฉันต้องการระบบความสามารถของวัตถุแบบเต็ม)
CMCDragonkai

3
โปรดอย่าที่gksuถูกคัดค้านและหลุดจาก Ubuntu 18.04
Nathan F.

5

วิธีที่สะดวกคือการสร้าง.desktopไฟล์เฉพาะหรือเพิ่มคำสั่งของคุณไปยังไฟล์ที่มีอยู่แล้วถามรหัสผ่านของคุณผ่าน GUI (gksu) ในตัวอย่างด้านล่างฉันเพิ่มคำสั่งเพื่อเรียกใช้ Gedit และ Software Center ด้วยสิทธิ์ sudo สำหรับตัวเรียกใช้ Gedit คุณจะต้องgksuติดตั้งเพื่อใช้การตั้งค่านี้:sudo apt-get install gksu

  1. คัดลอก Gedit .desktop file in/ usr / share / applications / to~ / .local / share / applications`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    และเปิดเพื่อแก้ไข (ลากไปที่หน้าต่าง gedit ที่เปิดอยู่)

  2. ค้นหาบรรทัด: Actions = Window; Document;

  3. เพิ่มชื่อคำสั่งของคุณลงในบรรทัด (ไม่ใช่ชื่อที่คุณจะเห็นในอินเทอร์เฟซของคุณใช้สำหรับการอ้างอิงภายในในไฟล์เท่านั้น)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. เพิ่มหัวข้อที่เกี่ยวข้องที่ด้านล่างของไฟล์:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. ปิดไฟล์และลากไปที่ตัวเรียกใช้

ตอนนี้คุณสามารถเรียกใช้ gedit และ Software Center ด้วยสิทธิ์ sudo:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


จริง ฉันไม่มีข้อคัดค้าน เหตุผลที่ฉันแสดงความคิดเห็นเกี่ยวกับ USC คือส่วนสำคัญของคำถามคือว่า OP สามารถสร้างระบบของพวกเขาที่สร้างขึ้นจากการติดตั้งเซิร์ฟเวอร์ได้อย่างไรเช่นระบบเดสก์ท็อป Ubuntu ทั่วไปที่เกี่ยวข้องกับการรับรองความถูกต้องแบบกราฟิกสำหรับงานการดูแลระบบ คำตอบของฉันมุ่งเน้นไปที่สิ่งนั้นและอธิบายถึงลักษณะทั่วไปของการรันโปรแกรมเช่นรากกราฟิก ในการทำเช่นนั้นก็ skimps ในกลศาสตร์ของ/gksu gksudoดังนั้นคำตอบของคุณทั้งดีและจำเป็น! ฉันแค่หวังว่า OP จะติดตั้ง / แก้ไข polkit ด้วยเพราะฉันคิดว่ามันจะทำให้ระบบปฏิบัติการใช้งานได้ตามที่พวกเขาต้องการ
Eliah Kagan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.