ความแตกต่างระหว่างsudo
และgksudo
คืออะไร
ความแตกต่างระหว่างsudo
และgksudo
คืออะไร
คำตอบ:
sudo
ขอรหัสผ่านในบรรทัดคำสั่งและgksudo
เปิดกล่องโต้ตอบขึ้นมา
sudo -E
เทียบเท่ากับgksudo
?
gksudo
เป็นส่วนหน้าของ GTK sudo
(BTW kdesudo
เป็นส่วนเสริมของ Qt) อย่างไรก็ตาม (ตามค่าเริ่มต้น) จะจัดการกับตัวแปรสภาพแวดล้อม ( HOME
, XAUTHORITY
และอื่น ๆ ) ได้มากกว่าที่sudo
จะทำให้คำสั่งที่รันอยู่ปลอดภัยยิ่งขึ้น
เท่าที่ฉันเห็นคำตอบของ @Logics นั้นถูกต้องเพียงพอ (@Ignacio Vazquez-Abrams's ไม่เสร็จสมบูรณ์) นี่คือคำชี้แจงที่พยายามหลีกเลี่ยงเพื่อ @Davros @knitti คำตอบ / ความคิดเห็น (กรุณาลบ / แก้ไขเมื่อไม่จำเป็น):
sudo
แล้ว UI ที่ใช้ไม่ใช่ความแตกต่างเพียงอย่างเดียวของสองคำสั่ง HOME
จุดตัวแปรสภาพแวดล้อมในการsudo
คำสั่งในบางระบบและสถานการณ์) ไม่ใช่แอพ GUI ทั้งหมดที่เขียนไปยังโฮมไดเร็กตอรี่ของคุณและไม่ใช่แอพพลิเคชั่น CLI ทั้งหมดที่ทำไม่ได้ดังนั้นคำสั่งประเภทนี้ไม่ใช่ประเด็นสำคัญ 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>
sudo
คำสั่งนั้นไม่เหมือนกันในทุกระบบและสามารถกำหนดค่าผ่านvisudo
คำสั่งได้โปรดดูsudoers(5)
manpage สำหรับข้อมูลเพิ่มเติมการใช้ sudo ปกติเพื่อเรียกใช้โปรแกรมกราฟิกจะมีโอกาสเกิดขึ้นได้ยากในบางกรณี เพื่อความปลอดภัย gksudo (หรือ kdesudo ตามความเหมาะสม) ควรใช้สำหรับการรันโปรแกรมด้วย GUI ฉันคิดว่านี่เป็นข้อผิดพลาดจริง ๆ แม้ว่าฉันจะได้ยินคำอธิบายว่า gksudo เข้าใจตัวแปร X server และ sudo ไม่อาจนำไปสู่ปัญหาได้ เป็นเพียงแค่ปลาย; หากคุณใช้โปรแกรมกราฟิกเป็นรูทแทนที่จะเปิดเทอร์มินัลหนึ่งตัวสำหรับแต่ละโปรแกรมที่คุณต้องการเรียกใช้ให้พิมพ์ ALT-F2 (alt และฟังก์ชั่นคีย์ 2 ในเวลาเดียวกัน) จากนั้นพิมพ์ในกล่องโต้ตอบที่ปรากฏขึ้น "gksudo" โปรแกรม "ไม่มีคำพูดและโปรแกรมถูกแทนที่ด้วยแอปพลิเคชันที่คุณต้องการเรียกใช้
sudo ทำงานเป็นผู้ใช้ปัจจุบันด้วยสิทธิ์ที่ยกระดับ สิ่งนี้มีความเป็นไปได้ในการเปลี่ยนแปลงการอนุญาตไฟล์ของไฟล์กำหนดค่าผู้ใช้บางอย่าง (เกี่ยวข้องกับสภาพแวดล้อมแบบกราฟิกของคุณ) เมื่อเรียกใช้แอพแบบกราฟิก คุณอาจพบข้อผิดพลาดเกิดขึ้นเมื่อเรียกใช้แอปเหล่านี้อีกครั้งโดยไม่ต้อง sudo
gksudo (kdesudo ภายใต้ KDE) เรียกใช้แอปในฐานะผู้ใช้รูทดังนั้นการอนุญาตการใช้ไฟล์ที่สัมผัสจะอยู่ในไฟล์ของรูทไม่ใช่ไฟล์ของผู้ใช้ การเรียกใช้แอพเหล่านี้อีกครั้งโดยไม่มี gksudo / kdesudo จะมีพฤติกรรมตามที่คาดหวังเสมอ
คำตอบปัจจุบันไม่ถูกต้อง ตามวิกิพีเดีย Ubuntu RootSudo :
"คุณไม่ควรใช้ sudo ปกติเพื่อเริ่มโปรแกรมกราฟิกเป็น root คุณควรใช้ gksudo (kdesudo บน Kubuntu) เพื่อรันโปรแกรมดังกล่าว gksudo ตั้งค่า HOME = ~ root และคัดลอก. Xauthority ไปยังไดเรกทอรี tmp ซึ่งจะป้องกันไฟล์ในบ้านของคุณ ไดเรกทอรีกลายเป็นเจ้าของโดย root (AFAICT นี่คือทั้งหมดที่พิเศษเกี่ยวกับสภาพแวดล้อมของกระบวนการเริ่มต้นด้วย gksudo vs. sudo) "