มีความแตกต่างระหว่างพฤติกรรมของgksu foo
และgksudo foo
?
พวกเขาสามารถใช้แทนกันได้?
มีความแตกต่างระหว่างพฤติกรรมของgksu foo
และgksudo foo
?
พวกเขาสามารถใช้แทนกันได้?
คำตอบ:
ไฟล์ทั้งคู่ชี้ไปที่เดียวกัน:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... เป็นไปgksudo
symlinked gksu
แต่นี่ไม่ได้หมายความว่าพวกเขาทำสิ่งเดียวกันห่างไกลจากมัน
แอพพลิเคชั่นสามารถตรวจจับคำสั่งที่ใช้เรียกใช้งานได้ โดยทั่วไปจะเป็นargv[0]
ภาษา C-style หรือ$0
สคริปต์เชลล์สไตล์ Bourne แอปพลิเคชันสามารถดูได้และในกรณีนี้จริง ๆ แล้วมันเปลี่ยนวิธีการทำงาน สิ่งบ่งชี้แรกของสิ่งนี้อยู่ในman gksu
หน้า:
gksu is a frontend to su and gksudo is a frontend to sudo.
หากคุณค้นหาที่มา ( apt-get source gksu
) run_mode
คุณจะเห็นว่ามันตรวจพบสิ่งนี้ได้อย่างไร:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
คุณสามารถแทนที่สิ่งนี้ด้วย--su-mode
/ -w
และ--sudo-mode
/ -S
อาร์กิวเมนต์ (เพื่อให้คุณสามารถเรียกใช้คำสั่งที่เทียบเท่าโดยไม่ต้องใช้gksudo
symlink ... แต่นั่นก็ขึ้นอยู่กับคุณ
หากคุณต้องการที่จะรู้ว่าวิธีการเหล่านี้ "โหมด" gksu
มันแตกต่างกันมีเพียงบิตของการหลบหนีใน libgksu
คุณจำเป็นต้องทำตามมันเข้าไป นี่คือไลบรารีที่ตรวจสอบการอนุญาตจริง ๆ ก่อนส่งไปยังระบบ
ถ้าโหมดไม่ได้ระบุ (เช่นคุณโทรgksu
โดยไม่ขัดแย้ง) ตามเวลาที่มันจะมาถึง libgksu
, มันจะตรวจสอบ Gconf (ตามที่สเตฟาโนชี้ให้เห็น)และถ้ามันยังไม่สามารถตัดสินใจได้ก็จะเริ่มต้นไปยังsu
โหมด
bash
เปิดโหมดเข้มงวด POSIX sh
เมื่อเรียกเป็น และgksu
เป็นยังทราบชื่อภาวนา
ใน Ubuntu (!) ไม่มีความแตกต่าง
gksu
โดยปกติจะเข้าสู่ระบบในผู้ใช้รูทและเรียกใช้แอพในเซสชันนี้ อย่างไรก็ตามในอูบุนตูเป็นค่าเริ่มต้นโดยใช้โหมด "sudo" gksudo
ซึ่งเทียบเท่าของการทำงาน นี่เป็นเพราะใน Ubuntu คุณไม่สามารถเข้าสู่ระบบได้ในฐานะรูทตามค่าเริ่มต้น
gksudo
เป็นกราฟิกที่เทียบเท่าsudo
(และเป็น Oli ชี้ให้เห็นเพียงแค่การเชื่อมโยงสัญลักษณ์เพื่อ gksu)
จากรายการ gconf ของ gksu:
นอกจากนี้ความแตกต่างระหว่าง sudo และ gksudo:
คุณไม่ควรใช้ sudo ปกติเพื่อเริ่มโปรแกรมกราฟิกเป็นรูท คุณควรใช้ gksudo (kdesudo บน Kubuntu) เพื่อเรียกใช้โปรแกรมดังกล่าว gksudo ตั้งค่า HOME = ~ root และคัดลอก. Xauthority ไปยังไดเรกทอรี tmp สิ่งนี้ป้องกันไม่ให้ไฟล์ในโฮมไดเร็กทอรีของคุณเป็นเจ้าของโดยรูท (AFAICT นี่คือทั้งหมดที่พิเศษเกี่ยวกับสภาพแวดล้อมของกระบวนการเริ่มต้นด้วย gksudo vs. sudo)
- (จากเอกสารชุมชนผ่านChris Wilson )
ฉันรู้ว่านี้เป็นหัวข้อเก่า แต่ฉันได้รับการถามจะบอกคุณเกี่ยวกับความแตกต่างที่บอบบาง แต่ที่สำคัญระหว่างและgksu
gksudo
แม้ว่าฉันจะดูยาวและหนักหน่วงฉันก็ไม่สามารถค้นหาความแตกต่างที่เป็นเอกสารได้ทุกที่ แต่มันก็มีอยู่จริง ฉันยังไม่พบว่าทำไมมีความแตกต่าง ฉันพบวิธีที่ยากเมื่อฉันเผลอลบไฟล์บางระบบได้อย่างแม่นยำเพราะความแตกต่างนี้ (กล่าวถึงในการตั้งกระทู้ในฟอรั่มอูบุนตู ) - ฉันเคยใช้แต่หลังจากนั้นผมได้ทำแน่ใจเสมอที่จะใช้gksu
gksudo
เพื่อสรุปลองสิ่งนี้
touch abc
touch abc.tmp
touch abctmp
รันคำสั่งหกคำสั่งต่อไปนี้ ห้ารายการแรกให้ผลลัพธ์ (คาดหวัง) เหมือนกัน (เช่นเพิ่งabc.tmp
) ส่วนไฟล์ที่หกมีไฟล์เพิ่มเติม ( abctmp
) ที่ไม่ควรทำ
find . -regextype posix-egrep -regex '.*\.tmp' -print
sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
ลองนึกภาพปัญหาเมื่อคุณแทนที่-print
ด้วย-delete
ในfind
คำสั่ง (ซึ่งเป็นสิ่งที่เกิดขึ้นกับฉันอย่างแน่นอนทำให้ไฟล์ระบบบางส่วนจะถูกลบ)
ดังนั้นโปรดใช้แทนgksudo
gksu
gksudo
เทียบเท่ากับการพิมพ์gksu --sudo-mode