जवाबों:
दोनों फाइलें एक ही स्थान की ओर इशारा करती हैं:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
से सहानुभूति है gksu
। लेकिन इसका मतलब यह नहीं है कि वे वही काम करते हैं, जो इससे दूर है।
एप्लिकेशन इसे चलाने के लिए उपयोग की जाने वाली कमांड का पता लगा सकते हैं। यह आमतौर argv[0]
पर सी-स्टाइल भाषाओं में या $0
बॉर्न-शैली शेल स्क्रिप्ट में होता है। एप्लिकेशन उस पर और इस मामले में देख सकता है, वास्तव में यह बदलता है कि यह कैसे काम करता है। इसका पहला संकेत 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
सिमिलिंक की आवश्यकता के बिना समतुल्य कमांड चला सकें ... लेकिन यह आपके ऊपर है।
यदि आप यह जानना चाहते हैं कि ये "मोड" वास्तव में कैसे भिन्न हैं, तो केवल भागने में थोड़ा सा है gksu
। आपको इसमें अनुसरण करने की आवश्यकता है libgksu
। यह लाइब्रेरी है जो वास्तव में सिस्टम को सौंपने से पहले अनुमतियों की जांच करती है।
यदि कोई मोड निर्दिष्ट नहीं किया जाता है (जैसे कि आप gksu
बिना तर्क के कॉल करते हैं) तब तक यह पहुंच जाता है libgksu
, यह Gconf (जैसा कि स्टेफानो बताते हैं) की जाँच करेगा और यदि यह अभी भी तय नहीं कर सकता है, तो यह su
मोड में डिफ़ॉल्ट होगा ।
bash
POSIX सख्त मोड चालू होने पर sh
। और आह्वान नाम gksu
से भी अवगत है।
उबंटू (!) में, कोई अंतर नहीं है।
gksu
सामान्य रूप से रूट उपयोगकर्ता में लॉग इन करेगा और इस सत्र पर एक ऐप चलाएगा। हालांकि, उबंटू पर, यह "सुडो मोड" का उपयोग करने में चूक करता है, जो चलने के बराबर है gksudo
। ऐसा इसलिए है क्योंकि ubuntu पर, आप डिफ़ॉल्ट रूप से रूट के रूप में लॉग इन नहीं कर सकते ।
gksudo
के चित्रमय बराबर है sudo
(और के रूप में ओली बताते हैं, सिर्फ एक प्रतीकात्मक कड़ी gksu करने के लिए)
Gksu के gconf प्रविष्टि से:
इसके अलावा, सूदो और gksudo के बीच अंतर पर:
ग्राफिकल एप्लिकेशन को रूट के रूप में शुरू करने के लिए आपको सामान्य सूडो का उपयोग कभी नहीं करना चाहिए। इस तरह के प्रोग्राम को चलाने के लिए आपको gksudo (Kubuntu पर kdesudo) का उपयोग करना चाहिए। gksudo ने घर = ~ रूट, और प्रतियाँ .Xauthority को tmp निर्देशिका में सेट किया। यह आपके होम डायरेक्टरी की फाइलों को रूट के स्वामित्व में आने से रोकता है। (AFAICT, यह वह सब है जो gksudo बनाम sudo के साथ शुरू की गई प्रक्रिया के वातावरण के बारे में विशेष है)।
- ( क्रिस विल्सन के माध्यम से सामुदायिक प्रलेखन से )
मुझे पता है कि यह एक पुराने धागा है, लेकिन मैं कर रहा हूँ आप बताने के लिए कहा के बीच एक सूक्ष्म लेकिन आवश्यक अंतर के बारे में 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