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


100

ผมเคยใช้gksudo nautilusและsudo nautilusผ่าน+AltF2

ความแตกต่างคืออะไร? พวกมันดูคล้ายกันมาก!


คำอธิบาย / การอภิปรายที่มีประโยชน์มากซึ่งรวมถึงภาพหน้าจอมากมาย: psychocats.net/ubuntu/graphicalsudo
nutty about natty


คำตอบ:


113

นำมาจากที่นี่ :

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

โปรดทราบว่านี้เป็นหลักเกี่ยวกับแฟ้มการกำหนดค่า ถ้าคุณเรียก Nautilus เป็นrootแม้จะมีgksu/ gksudoและคุณสร้างไฟล์หรือโฟลเดอร์ได้ทุกที่กับมัน (รวมทั้งในไดเรกทอรีบ้านของคุณ) rootไฟล์หรือโฟลเดอร์ที่จะเป็นเจ้าของโดย แต่ถ้าคุณเรียกใช้ Nautilus (หรือแอปพลิเคชันกราฟิกอื่น ๆ ส่วนใหญ่) เช่นเดียวrootกับsudoพวกเขาอาจบันทึกไฟล์การกำหนดค่าไว้ในโฮมไดเร็กตอรี่ของคุณ (แทนที่จะrootเป็นโฮมไดเร็กตอรี่ของ) ไฟล์การกำหนดค่าเหล่านั้นอาจเป็นเจ้าของrootและไม่สามารถเข้าถึงได้เมื่อคุณไม่ได้ทำงานในฐานะรูทซึ่งอาจทำให้การตั้งค่าของคุณแย่ลงและอาจทำให้แอปพลิเคชั่นบางตัวไม่ทำงาน

วิธีแก้ไขเมื่อคุณทำผิดพลาดนี้คือการค้นหาไฟล์การกำหนดค่าและลบทิ้งหรือchownกลับไปเป็นของrootผู้ใช้ที่ไม่ใช่ผู้ใช้ของคุณ ไฟล์ดังกล่าวจำนวนมากเริ่มต้นด้วยหรือมีอยู่ในไดเรกทอรีที่เริ่มต้นด้วยการเป็น. .บางส่วนอยู่ใน.configโฟลเดอร์ในโฮมไดเร็กตอรี่ของคุณ หากต้องการดูไฟล์และโฟลเดอร์ที่ขึ้นต้นด้วย a .ใน Nautilus ให้กดCtrl+ H(ซึ่งจะแสดงไฟล์ที่ซ่อนอยู่ ) หากต้องการดูไฟล์เหล่านั้นด้วยlsให้ใช้เครื่องหมาย-a(หรือ-A)

เพื่อค้นหาว่ามีไฟล์ที่คุณไม่ได้เป็นเจ้าของในโฮมไดเร็กตอรี่ของคุณหรือไม่, คุณสามารถใช้คำสั่งต่อไปนี้ในเทอร์มินัล:

find $HOME -not -user $USER -exec ls -lad {} \;

ซึ่งจะแสดงรายการไฟล์ทั้งหมดภายใต้ไดเรกทอรีบ้านไม่ได้เป็นของผู้ใช้


1
ฉันใช้ 'sudo nautilus' ไปแล้ว ซึ่งหมายความว่าไดเรกทอรีหลักของฉันเป็นเจ้าของโดยขณะนี้ (PS: ภาษาอังกฤษของฉันไม่สมบูรณ์)
DrKenobi

22
ไม่หมายความว่าในขณะที่คุณใช้งาน Nautilus ในฐานะรูทไฟล์ใด ๆ ที่สร้างไว้ในโฮมไดเร็กตอรี่ของคุณจะเป็นของรูท. ซึ่งอาจรวมถึงภาพขนาดย่อและไฟล์สนับสนุนอื่น ๆ ที่ Nautilus สร้างขึ้นโดยอัตโนมัติ
Ryan Thompson

1
. segemnet ที่ยกมาที่คุณใช้ทำให้ฉันสับสนตั้งแต่ฉันอ่านครั้งแรก โดยเฉพาะที่มันบอกว่า: "สิ่งนี้จะป้องกันไฟล์ในโฮมไดเร็กตอรี่ของคุณให้เป็นเจ้าของโดยรูท" .. ฉันทำการทดสอบวันนี้ด้วยการสร้างไฟล์ทดสอบบางไฟล์บน 10.04, 10.04 (VM), 10.10 (VM) และไม่ว่าฉันจะเริ่มต้น sudo / gksudo (Terminal-> Nautilus, Terminal-> gedit, Alt + F2 ได้อย่างไร) .) ... ทุกกรณีทำให้ฉันสร้าง "root" ขึ้นใหม่โดยมีกลุ่ม "root" .. บางทีฉันอาจจะพลาดอะไรบางอย่าง แต่ฉันคิดว่าส่วนหนึ่งของส่วนที่ยกมานั้นทำให้คนเข้าใจผิด ...
ปีเตอร์ O

อืมฉันเพิ่งอ้างอิงหน้าวิกิ ฉันไม่เข้าใจอย่างลึกซึ้งถึงความแตกต่างระหว่างเครื่องมือทั้งสอง บางทีใครบางคนในunix.stakexchange.comสามารถช่วยได้?

2
@ Peter.O ฉันได้ขยายคำตอบนี้ไปยังที่อยู่และคำถามที่อธิบายว่าไฟล์ที่ได้รับการปฏิบัติที่แตกต่างกันด้วยsudoผ่านทาง/gksu gksudo(@ChrisWilson รู้สึกอิสระที่จะย้อนกลับหรือตัดทอนการแก้ไขนี้หากคุณรู้สึกว่ามันไม่ได้อยู่ในขอบเขตของคำตอบของคุณ ... ดูเหมือนว่าฉันจะเป็นแบบนั้น แต่มันก็เป็นการโทรของคุณทั้งหมด)
Eliah Kagan

9

คุณรู้หรือไม่ว่ามี Nautilus เพิ่มชื่อnautilus-gksuติดตั้ง nautilus-gksuซึ่งเพิ่ม "open as administrator" ในเมนูคลิกขวาของ nautilus?

หมายเหตุ: ไม่สามารถใช้งานได้ใน Ubuntu 12.04 เป็นต้นไป


1
nautilus-gksuไม่สามารถใช้งานได้อีกต่อไปจาก Ubuntu 12.04 และต่อไป
IQAndreas

และลิงค์ของคุณเพียงแสดงว่าสามารถใช้ได้ถึง 11.10 ...
วิลฟ์

5

หากคุณเริ่มต้นแอปพลิเคชันกราฟิกด้วย sudo คุณสามารถทำลายความเป็นเจ้าของไฟล์ของคุณซึ่งอาจทำให้แอปของคุณพัง ไม่เคยทำอย่างนั้น ตรวจสอบความช่วยเหลือของชุมชน :

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


3

sudo โดยค่าเริ่มต้นจะรักษาตัวแปร $ HOME ไว้ ตัวอย่างเช่นหากคุณเรียกใช้sudo firefoxคุณจะทำงานด้วยสิทธิ์พิเศษระดับราก แต่เป็นการกำหนดค่าของคุณ หากคุณเปลี่ยนการตั้งค่าในสถานการณ์นี้คุณจะจบลงด้วยส่วนต่าง ๆ ของการกำหนดค่าของคุณเป็นเจ้าของโดยรูทแทนที่จะเป็น ID ผู้ใช้ของคุณ


ฉันชอบอหังการของคำตอบนี้
Andre Figueiredo

2

sudo -H GUI-application-program

ใน Ubuntu (17.10) 17.10.1 และอาจเป็น Ubuntu รุ่นในอนาคตgksuและgksudoเลิกใช้แล้ว พวกเขาทำงานใน Xorg แต่ไม่ใช่ Wayland แต่คุณสามารถใช้sudo -Hเพื่อรันโปรแกรมแอปพลิเคชัน GUI โดยไม่มีความเสียหายกับไฟล์กำหนดค่าของคุณ อย่าได้sudoใช้ธรรมดา

ถ้าคุณกำลังเรียก Wayland (ระบบกราฟิกใหม่ที่มาแทนที่ Xorg) คุณต้องคำสั่งที่มีxhostมากเกินไป

xhost +si:localuser:root       # if Wayland
sudo -H nautilus --no-desktop

ดูลิงค์ต่อไปนี้สำหรับรายละเอียดเพิ่มเติม

เหตุใดจึงไม่ gksu / gksudo หรือเรียกใช้แอปพลิเคชันกราฟิกที่มี sudo ทำงานร่วมกับ Wayland


-2

พบในไฟล์ที่สร้างโดยคำสั่ง terminal 'info gksudo':

gksu เป็น front-end ของ su และ gksudo เป็น front-end ของ sudo วัตถุประสงค์หลักของพวกเขาคือการรันคำสั่งกราฟิกที่ต้องการรูทโดยไม่จำเป็นต้องเรียกใช้ X terminal emulator และใช้ su โดยตรง

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

สำหรับผู้เริ่มต้นในเทอร์มินัลให้พิมพ์หรือวางข้อมูลคำสั่งด้วยชื่อคำสั่งที่คุณสนใจเป็นพารามิเตอร์ รูปแบบคือinfo [command_name](จำไว้ว่าอย่าใส่พรอมต์คำสั่งหรือวงเล็บ) รายการเทอร์มินัลที่แนะนำสำหรับผู้เริ่มต้นคือ:

$ info
$ info info

-3

หากคุณเลือก gksudo nautilus คุณจะถามรหัสผ่านของคุณในรูปกราฟิก ด้วย sudo คุณถามมันใน terminal


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