ความแตกต่างระหว่าง sudo และ gksu เหมือนกับความแตกต่างระหว่าง sudo -i และ sudo -s หรือไม่


26

ความแตกต่างระหว่างsudo cmdและgksu cmdเหมือนกับความแตกต่าง
ระหว่างการเริ่มเชลล์ด้วยsudo -iและsudo -s?

... หรือใส่อีกทางหนึ่ง
คือsudo cmd เช่นเดียวกับsudo -i cmd
และgksu cmdเช่นเดียวกับsudo -s cmd?

แก้ไข: ขึ้นอยู่กับสิ่งที่ฉันอ่านบนหน้าเอกสารของ Ubuntuที่มีข้อความว่า:

You should never use normal sudo to start graphical applications as root.  
You should use gksudo (kdesudo on Kubuntu) to run such programs. gksudo sets  
HOME=~root, and copies .Xauthority to a tmp directory. This prevents files  
in your home directory becoming owned by root.  
(AFAICT, this is all that's special about the environment of the started   
 process with gksudo vs. sudo).

"AFAICT" doen't จริงๆให้ฉันมีความมั่นใจเต็มรูปแบบที่มีอะไรมากไป


(..a ล่าช้าปรับปรุง : ฉันทดสอบ commemnt ของเขาในวันนี้ (2 เดือนต่อมา) เกี่ยวกับ:
"นี้ป้องกันไฟล์ในไดเรกทอรีบ้านของคุณเป็นเจ้าของโดย root"
ไฟล์ทั้งหมดที่ฉันสร้างผ่าน sudo / gksu ทั้งหมดเป็น " root " และ กลุ่มคือ " root ")


ฉันได้อ่านบางส่วนของinfo sudoและสังเกตเห็น-iและ-s ดูเหมือนว่าจะทำสิ่งเดียวกันกับปัญหาสภาพแวดล้อมของAFAICT ...
แต่ฉันตีเกิน .. ดังนั้นฉันจึงถามคำถามของฉันที่นี่

ป.ล. .. คำถามของฉันไม่เกี่ยวกับ sudo vs gksu
.. มันเกี่ยวกับ: gksuเหมือนกับsudo-s
.. และถ้าไม่พวกเขาต่างกันอย่างไร

คำตอบ:


16

gksuเป็นพื้นหน้าแบบกราฟิกสำหรับ sudo ที่อนุญาตให้รันคำสั่งแบบกราฟิกโดยไม่จำเป็นต้องรัน X terminal emulator และใช้ su โดยตรง มันมีประสิทธิภาพแค่ผิว GTK + สำหรับคำสั่ง superuser

ดังนั้นหากคุณต้องการรันโปรแกรมที่ใช้ GUI เป็นรูทคุณจะต้องเรียกใช้ด้วยgksu cmdแทนที่จะsudo cmdใช้สำหรับเรียกใช้โปรแกรมคอนโซลในฐานะรูท


1
ฉันไม่รู้ว่าคุณหมายถึงอะไรโดยgraphicalส่วนหน้า ... แอพ GTK ทำงานค่อนข้างมีความสุขไม่ว่าจะเริ่มต้นผ่าน sudo หรือ gksu ... แต่มันรัน progam ในสภาพแวดล้อมที่แตกต่างกัน ... (ฉัน ' จะเพิ่มมากขึ้นบางคำถามของฉันจะชี้ให้เห็นว่าทำไมฉันถามคำถาม ...
Peter.O

2
graphical frontendฉันได้เข้าใจในที่สุดสิ่งที่คุณหมายโดย ฉันมักจะใช้เทอร์มินัลเพื่อเรียกใช้ sudo / gksu ... แต่ด้วยจิตวิญญาณของสัตว์เดรัจฉานที่พยายามทุกอย่างที่ฉันคิดฉันพยายามวิ่งsudoและgksuผ่าน Alt + F2 ... บิงโก! .. sudoหายไปในความว่างเปล่า แต่gksuเพิ่มขึ้นเป็นโอกาสและนำเสนอให้ฉันด้วย (ตำนาน) graphical forntend... มันเป็นกล่องโต้ตอบเดียวกันกับที่ปรากฏขึ้นสำหรับผู้จัดการแพคเกจ Synapticฯลฯ ...
Peter.O

PS .. ฉันเพิ่งลอง gksu ใน terminal ที่สดใหม่ .. กล่องโต้ตอบรหัสผ่านก็ปรากฏขึ้นที่นั่นเช่นกัน ... ฉันต้องเคยเห็นมาก่อน แต่เชื่อมโยงกับรหัสผ่าน (เท่านั้น) และไม่ใช่ความจริงที่ว่ามันเป็นกล่องโต้ตอบGUIจาก คำสั่งเทอร์มินัล ... ("ฉันเห็น" ชายตาบอดพูดแล้ว :) ... ขอบคุณ ...
Peter.O

. ติดตามต่อไปกระตุ้นโดยคำตอบของคุณดูเหมือนว่าจะgksuเปลี่ยนแปลงโฟลเดอร์ XAUTHORITY และsudoไม่ ... ฉันไม่แน่ใจว่ามันคืออะไรเกี่ยวกับ แต่ดูเหมือนจะสำคัญ! ... นี้ได้แก้ไขปัญหาของฉัน ... (รายละเอียดในคำตอบของฉันด้านล่าง)
Peter.O

10

sudo -iตั้งค่าสภาพแวดล้อมการเข้าสู่ระบบให้กับผู้ใช้เป้าหมาย ( รากในกรณีนี้) ส่วนใหญ่เป็นว่าHOMEตัวแปรสภาพแวดล้อมมีการเปลี่ยนแปลงซึ่งหมายความว่า~/.bashrcโหลดผู้ใช้เป้าหมาย

gksuคือดังนั้นsudo -iในนั้นจะสลับ$HOMEไปยังผู้ใช้รู


ขอบคุณ KC .. มันเริ่มมีเหตุผลสำหรับฉัน (ช้า, ช้า) ... แต่ดูเหมือนชัดเจนว่า gksu โดยการสร้างสำเนา XAUTHORITY และทำงานจาก (?) ทำให้ gksu เป็นหมวดหมู่ที่ค่อนข้างแยกกันsudoตัวแปรใด ๆที่ฉันได้อ้างถึง ... และการตระหนักถึงสิ่งนี้คือAha! ช่วงเวลาสำหรับฉัน ... ผลที่สุดคือ: ใช้ gksu สำหรับแอพ GUI! .. แต่ฉันกำลังทิ้งให้อยู่กับหนึ่ง Quandry ยังไม่ได้แก้ไขเพิ่มเติม ... ไม่ gksu เพียงนำไปใช้กับGTKปพลิเคชันหรือเป็นอย่างดีปรับให้ใช้ gksu เมื่อทำงานKDEแอป GUI?
Peter.O

5

นี้ไม่ได้จริงๆคำตอบ แต่มันอาจจะเป็นที่น่าสนใจบางอย่าง ...
ฉันเริ่มที่จะได้รับความคิดของสิ่งที่เกิดขึ้นกับคำสั่งเหล่านี้ su ให้
แต่ฉันไม่มากยังมี ... gksuฉันจะใช้.. นี่เป็นการเดินทางเพื่อทำความเข้าใจกับฉันมากกว่า ... และฉันก็ไม่เข้าใจว่าgksuถูกต้องkonsoleหรือkateหรือฉันต้องใช้ตัวแปร KDE kdesu..

นี่คือผลการทดสอบบางอย่างที่ฉันเพิ่งลอง

From user fred's terminal, launch gnome-terminal

su style   resulting            custom   (ls)   new file
command    prompt               prompt   home   ownership
---------  -------------------- -------  -----  ----------
sudo      .root@DT:~#           fred's   fred   root
gksu       root@DT:/home/fred#  root's   fred   root
sudo -i    root@DT:~#           root's   root   root
sudo -s   .root@DT:~#           fred's   fred   root

ผลลัพธ์เหล่านี้ไม่เห็นด้วยกับหน้าเอกสารของ Ubuntuซึ่งระบุว่า:

 This prevents files in your home directory becoming owned by root

UPDATE: envตัวแปรXAUTHORITY สำหรับsudoและgksu ที่เรียกใช้ Terminals นั้นแตกต่างกัน (ดังที่กล่าวไว้ในหน้าเอกสารของ Ubuntu )

sudo    #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
sudo -i #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
sudo -s #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
gksu    #### XAUTHORITY=/tmp/libgksu-xR2OGn/.Xauthority   

นี่แสดงให้เห็นว่าgksuไม่เหมือนกับsudo -sคำสั่งที่ฉันอ้างถึงในคำถาม ... และดังนั้นจึงตอบคำถามดั้งเดิมของฉัน (ในบางวิธียังคลุมเครือ) ... และคำตอบของคริสทำให้ฉันคิดหนักใจกับเรื่องนี้! ... ฉันต้องการกาแฟ !!


3

sudo สำหรับแอพบรรทัดคำสั่ง, gksu / gksudo สำหรับกราฟิก


ขอบคุณคำถามของฉันอาจไม่ชัดเจนเท่าความเข้าใจดั้งเดิมของฉันเกี่ยวกับปัญหา ... ฉันพยายามหาว่าอะไรคือความแตกต่างที่เฉพาะเจาะจงที่ทำให้มันจำเป็นต้องมีทั้งผู้บังคับบัญชา .. ดูเหมือนว่าความแตกต่างหลักอยู่ใน วิธีที่ใช้gksuงานได้จากสำเนาชั่วคราวของ XAUTHORITY .. ฉันไม่ชัดเจนในรายละเอียดว่าทำไม XAUTHORITY จึงต้องจัดการเป็นพิเศษ แต่เป็นสิ่งสำคัญที่แยกพฤติกรรมของมันออกจากกันsudo
Peter.O
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.