sudo vs gksudo ความแตกต่าง?


37

ความแตกต่างระหว่างsudoและgksudoคืออะไร


1
คำถามที่ดี. ฉันกำลังเรียนรู้ Linux ตอนนี้ (คุณจะเห็นว่าฉันยังไม่พบรูปแบบแป้นพิมพ์เลย)
r0ca

คำตอบ:


27

sudoขอรหัสผ่านในบรรทัดคำสั่งและgksudoเปิดกล่องโต้ตอบขึ้นมา


6
gksu (do) ยังมีการกำหนดค่าของตนเองซึ่งตัวแปรสภาพแวดล้อมที่จะส่งผ่านไปยังเด็กโดยแยกจากของ su (do) ตัวอย่างเช่นหากการกำหนดค่า sudoers ของคุณระบุ! keep_env การขาด $ DISPLAY อาจป้องกันไม่ให้แอปพลิเคชันกราฟิกทำงาน แต่ gksudo ควรทำงาน คุณสามารถค้นหารายละเอียดบางอย่างที่git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/...หรือlive.gnome.org/gksu
ephemient

@ephemient ดังนั้นนอกเหนือจากพรอมต์แบบกราฟิกแล้วsudo -Eเทียบเท่ากับgksudo?
isomorphismes

3
คำตอบด้านล่างดูเหมือนไกลกว่าsuperuser.com/a/726249/112542
johny ทำไม

4
ฉันต้องการย้ำว่านี่ไม่ใช่ความแตกต่างที่สำคัญเลยและคำตอบนี้ค่อนข้างเข้าใจผิดกับมือใหม่ ความแตกต่างที่สำคัญมีการอธิบายไว้ที่นี่: askubuntu.com/a/11766/81034และคำตอบด้านล่าง (@johnywhy ที่เชื่อมโยงกับ) ก้าวไปอีกขั้นเพื่อเพิ่มความแตกต่างเล็กน้อยให้กับมัน โปรดอ่านคำถาม Askubuntu แทนที่จะใช้คำตอบที่ทำให้เข้าใจผิดนี้
sundar - Reinstate Monica

31

gksudoเป็นส่วนหน้าของ GTK sudo(BTW kdesudoเป็นส่วนเสริมของ Qt) อย่างไรก็ตาม (ตามค่าเริ่มต้น) จะจัดการกับตัวแปรสภาพแวดล้อม ( HOME, XAUTHORITYและอื่น ๆ ) ได้มากกว่าที่sudoจะทำให้คำสั่งที่รันอยู่ปลอดภัยยิ่งขึ้น


เท่าที่ฉันเห็นคำตอบของ @Logics นั้นถูกต้องเพียงพอ (@Ignacio Vazquez-Abrams's ไม่เสร็จสมบูรณ์) นี่คือคำชี้แจงที่พยายามหลีกเลี่ยงเพื่อ @Davros @knitti คำตอบ / ความคิดเห็น (กรุณาลบ / แก้ไขเมื่อไม่จำเป็น):

  1. แม้ว่าคำสั่งทั้งสองจะแสดงถึงจริง ๆsudoแล้ว UI ที่ใช้ไม่ใช่ความแตกต่างเพียงอย่างเดียวของสองคำสั่ง
  2. การเรียกใช้โปรแกรม GUI ไม่ได้เป็นสถานการณ์เฉพาะเมื่อคุณควรใช้ gk / kdesudo แทนคุณควรใช้ gk / kdesudo เมื่อใดก็ตามที่คุณไม่สามารถตรวจสอบว่าคำสั่งจะสร้างไฟล์ / เขียนไปยังไดเรกทอรีบ้านของคุณ (ที่HOMEจุดตัวแปรสภาพแวดล้อมในการsudoคำสั่งในบางระบบและสถานการณ์) ไม่ใช่แอพ GUI ทั้งหมดที่เขียนไปยังโฮมไดเร็กตอรี่ของคุณและไม่ใช่แอพพลิเคชั่น CLI ทั้งหมดที่ทำไม่ได้ดังนั้นคำสั่งประเภทนี้ไม่ใช่ประเด็นสำคัญ
  3. คุณยังสามารถใช้sudoคำสั่งเพื่อเปิดตัวแอพพลิเค GUI เป็นราก (สำหรับการดูการส่งออกคอนโซลปพลิเคชันเป็นตัวอย่าง) แต่คุณต้องจับHOME(และอื่น ๆ เช่นXAUTHORITY, DISPLAYใส่-วิธีการที่เกี่ยวข้องกับสิ่งที่- ฯลฯ ) ตัวแปรด้านสิ่งแวดล้อมอย่างถูกต้องเพื่อ แอพที่เปิดตัวจะไม่ล้มเหลวสูญเสียฟังก์ชันการทำงานหรือทำสิ่งที่ไม่ดีจริงๆ ต่อไปนี้เป็นคำแนะนำปัจจุบันของฉันสำหรับการใช้งานsudo
    • sudo -H <rest of the command>
      • (จากsudoหน้าคู่มือในส่วนที่ 8) -H ( HOME )ตัวเลือกร้องขอให้นโยบายความปลอดภัยตั้งค่าHOMEตัวแปรสภาพแวดล้อมเป็นโฮมไดเร็กทอรีของผู้ใช้เป้าหมาย (รูทเป็นค่าเริ่มต้น) ตามที่ระบุโดยฐานข้อมูลรหัสผ่าน นี่อาจเป็นพฤติกรรมเริ่มต้นทั้งนี้ขึ้นอยู่กับนโยบาย
      • อย่างน้อยควรป้องกันไฟล์ที่ถูกสร้างขึ้นในsudoไดเรกทอรีบ้านของผู้โทร
    • sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
      • สิ่งนี้จะช่วยให้ <GUI โปรแกรม> ดำเนินการในเทอร์มินัล TTY และแสดงในสภาพแวดล้อมเดสก์ท็อปของคุณ
  4. พฤติกรรมของsudoคำสั่งนั้นไม่เหมือนกันในทุกระบบและสามารถกำหนดค่าผ่านvisudoคำสั่งได้โปรดดูsudoers(5)manpage สำหรับข้อมูลเพิ่มเติม

2
ดูเหมือนคำอธิบายที่ดีกว่าคำตอบที่ได้รับการโหวตทั้งหมด ถี่ถ้วนมากขึ้นถูกต้องมากขึ้น แม้แต่ OP ตอบว่า "นั่นคือทั้งหมดหรือไม่" คำตอบที่ได้รับคะแนนทั้งหมด
johny ทำไม

2

การใช้ sudo ปกติเพื่อเรียกใช้โปรแกรมกราฟิกจะมีโอกาสเกิดขึ้นได้ยากในบางกรณี เพื่อความปลอดภัย gksudo (หรือ kdesudo ตามความเหมาะสม) ควรใช้สำหรับการรันโปรแกรมด้วย GUI ฉันคิดว่านี่เป็นข้อผิดพลาดจริง ๆ แม้ว่าฉันจะได้ยินคำอธิบายว่า gksudo เข้าใจตัวแปร X server และ sudo ไม่อาจนำไปสู่ปัญหาได้ เป็นเพียงแค่ปลาย; หากคุณใช้โปรแกรมกราฟิกเป็นรูทแทนที่จะเปิดเทอร์มินัลหนึ่งตัวสำหรับแต่ละโปรแกรมที่คุณต้องการเรียกใช้ให้พิมพ์ ALT-F2 (alt และฟังก์ชั่นคีย์ 2 ในเวลาเดียวกัน) จากนั้นพิมพ์ในกล่องโต้ตอบที่ปรากฏขึ้น "gksudo" โปรแกรม "ไม่มีคำพูดและโปรแกรมถูกแทนที่ด้วยแอปพลิเคชันที่คุณต้องการเรียกใช้


2

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

gksudo (kdesudo ภายใต้ KDE) เรียกใช้แอปในฐานะผู้ใช้รูทดังนั้นการอนุญาตการใช้ไฟล์ที่สัมผัสจะอยู่ในไฟล์ของรูทไม่ใช่ไฟล์ของผู้ใช้ การเรียกใช้แอพเหล่านี้อีกครั้งโดยไม่มี gksudo / kdesudo จะมีพฤติกรรมตามที่คาดหวังเสมอ


0

คำตอบปัจจุบันไม่ถูกต้อง ตามวิกิพีเดีย Ubuntu RootSudo :

"คุณไม่ควรใช้ sudo ปกติเพื่อเริ่มโปรแกรมกราฟิกเป็น root คุณควรใช้ gksudo (kdesudo บน Kubuntu) เพื่อรันโปรแกรมดังกล่าว gksudo ตั้งค่า HOME = ~ root และคัดลอก. Xauthority ไปยังไดเรกทอรี tmp ซึ่งจะป้องกันไฟล์ในบ้านของคุณ ไดเรกทอรีกลายเป็นเจ้าของโดย root (AFAICT นี่คือทั้งหมดที่พิเศษเกี่ยวกับสภาพแวดล้อมของกระบวนการเริ่มต้นด้วย gksudo vs. sudo) "


2
มีสี่คำตอบอื่น ๆ ; อันไหนไม่ถูกต้อง คำตอบของคุณไม่เหมือนกันกับ Davros ใช่หรือไม่
fixer1234

ฉันหมายถึงคำตอบที่ทำเครื่องหมายว่าถูกต้อง ใช่ Davros พูดในสิ่งเดียวกัน แต่ฉันเพิ่มสิ่งนี้เพราะเขาไม่มีลิงก์ไปยังแหล่งข้อมูล
eugene1832

1
ทางออกที่ดีกว่าคือเสนอการแก้ไขคำตอบนั้น การปรับปรุงคำตอบน่าจะได้รับการยอมรับ (+2 ตัวแทน) ในขณะที่คำตอบที่ซ้ำกันเป็นหลักน่าจะดึงดูด downvotes
fixer1234
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.