Gksudo और gksu में क्या अंतर है?


58

gksu fooऔर के व्यवहार में कोई अंतर है gksudo foo?
क्या उनका परस्पर उपयोग किया जा सकता है?

जवाबों:


39

दोनों फाइलें एक ही स्थान की ओर इशारा करती हैं:

$ 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मोड में डिफ़ॉल्ट होगा ।


1
ओली की टिप्पणी में जोड़ने के लिए; हालांकि gksudo को gksu से सहानुभूति है, Ubuntu में, डिफ़ॉल्ट रूप से हम केवल gksudo का उपयोग करेंगे क्योंकि हमारे पास / apps / gksu / sudo- मोड सक्षम है। इसलिए जब तक कोई व्यक्ति --su- मोड विकल्प gksu का उपयोग नहीं करता है।
Vish

5
@ ओली: मैं तुरंत यह निष्कर्ष नहीं निकालूंगा कि सिम्बल होने के कारण इसमें कोई अंतर नहीं है। सिम्बल के नाम के आधार पर, बिजीबॉक्स देखें, विभिन्न क्रियाएं की जाती हैं। इस मामले में, मुझे नहीं पता कि यह सच है या नहीं, लेकिन AFAIK यह वास्तव में मामला है।
लेकेनस्टाइन

1
-1, बहुत ही भ्रामक: सॉफ्टवेयर अलग-अलग तरह से इस पर निर्भर करता है कि उन्हें किस नाम से इस्तेमाल किया जाता था। उदाहरण के लिए bashPOSIX सख्त मोड चालू होने पर sh। और आह्वान नाम gksu से भी अवगत है।
MestreLion

बहुत छोटी स्क्रीन और बहुत बड़ी उंगलियों के साथ अपने सेलफोन पर इंटरनेट का उपयोग करना, मुझे अनजाने में डाउनवोट होना चाहिए। मैं क्षतिपूर्ति करने के लिए
उतावला था

37

उबंटू (!) में, कोई अंतर नहीं है।

  • gksuसामान्य रूप से रूट उपयोगकर्ता में लॉग इन करेगा और इस सत्र पर एक ऐप चलाएगा। हालांकि, उबंटू पर, यह "सुडो मोड" का उपयोग करने में चूक करता है, जो चलने के बराबर है gksudo। ऐसा इसलिए है क्योंकि ubuntu पर, आप डिफ़ॉल्ट रूप से रूट के रूप में लॉग इन नहीं कर सकते

  • gksudoके चित्रमय बराबर है sudo(और के रूप में ओली बताते हैं, सिर्फ एक प्रतीकात्मक कड़ी gksu करने के लिए)

Gksu के gconf प्रविष्टि से:

वैकल्पिक शब्द

इसके अलावा, सूदो और gksudo के बीच अंतर पर:

ग्राफिकल एप्लिकेशन को रूट के रूप में शुरू करने के लिए आपको सामान्य सूडो का उपयोग कभी नहीं करना चाहिए। इस तरह के प्रोग्राम को चलाने के लिए आपको gksudo (Kubuntu पर kdesudo) का उपयोग करना चाहिए। gksudo ने घर = ~ रूट, और प्रतियाँ .Xauthority को tmp निर्देशिका में सेट किया। यह आपके होम डायरेक्टरी की फाइलों को रूट के स्वामित्व में आने से रोकता है। (AFAICT, यह वह सब है जो gksudo बनाम sudo के साथ शुरू की गई प्रक्रिया के वातावरण के बारे में विशेष है)।
 - ( क्रिस विल्सन के माध्यम से सामुदायिक प्रलेखन से )


14

मुझे पता है कि यह एक पुराने धागा है, लेकिन मैं कर रहा हूँ आप बताने के लिए कहा के बीच एक सूक्ष्म लेकिन आवश्यक अंतर के बारे में gksuऔर gksudo

हालाँकि मैंने लंबे और कठोर दिखे हैं, फिर भी मुझे कहीं भी एक दस्तावेज अंतर नहीं मिला है, और फिर भी यह मौजूद नहीं है। मुझे यह भी पता नहीं चला है कि अंतर क्यों है। मुझे यह कठिन तरीका लगा जब मैंने गलती से इस अंतर के कारण कुछ सिस्टम फ़ाइलों को ठीक से हटा दिया ( उबंटू मंचों में चर्चा की गई ) - मैं उपयोग कर रहा था gksu, लेकिन तब से मैंने हमेशा उपयोग करना सुनिश्चित किया है gksudo

संक्षेप में, यह प्रयास करें।

  1. किसी फ़ोल्डर में तीन फ़ाइलें बनाएँ:
    touch abc
    touch abc.tmp
    touch abctmp
  2. निम्नलिखित छह आज्ञाएँ चलाएँ। पहले पांच समान (अपेक्षित) परिणाम देते हैं (यानी सिर्फ 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


बस 12.04LTS पर यह कोशिश की। अभी तक पूरी तरह से समझ में क्यों नहीं आया, लेकिन एक अंतर है। Gksu के लिए स्रोत कोड से पता चलता है कि gksudoटाइपिंग के बराबर हैgksu --sudo-mode
वॉरेन हिल

@WarrenHill - हाँ, सिद्धांत रूप में! लेकिन व्यवहार में नहीं। मुझे नहीं पता क्यों।
धान लैंडौ

2
दिलचस्प है, और 13.04 को सत्यापित किया गया। निश्चित रूप से एक बोली से निपटने बग की तरह लग रहा है।
l0b0

4
एक दायर बग
lbb0

1
@ l0b0 - धन्यवाद, मैंने अपना वोट बग में जोड़ लिया है।
धान लैंडौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.