sudo -i एक त्रुटि देता है


11

जब मैं sudo -iत्रुटि का उपयोग करके रूट पर स्विच करने का प्रयास करता हूं /var/tmp/sclDvf3Vx: line 8: -i: command not found... हालांकि, su -काम करता है जो मैं उपयोग करना जारी रखूंगा। मैं किसी भी तरह से एक Linux सिस्टम एडमिनिस्ट्रेटर नहीं हूँ, इसलिए वातावरण अभी भी मेरे लिए बहुत धूमिल है। मुझे लगता है कि मेरे सवाल हैं:

  1. त्रुटि क्यों फेंकी जा रही है?
  2. दोनों आज्ञाओं में क्या अंतर है?
  3. आप एक का उपयोग दूसरे पर क्यों करेंगे?

अपडेट करें:

मैं CentOS संस्करण का उपयोग कर रहा हूँ: CentOS रिलीज़ 6.6 (फाइनल)

यहाँ कुछ कमांड्स से आउटपुट है जो मुझे नीचे टिप्पणी में चलाने के लिए कहा गया था।

  • type sudo : sudo is /opt/centos/devtoolset-1.1/root/usr/bin/sudo
  • sudo -V : /var/tmp/sclIU7gkA: line 8: -V: command not found
  • grep'^root:' /etc/passwd : root:x:0:0:root:/root:/bin/bash

अपडेट करें:

यह मेरे गैर-रूट उपयोगकर्ता के लिए जोड़ा गया था ~ / .bashrc थोड़ी देर पहले क्योंकि मुझे C ++ 11 समर्थन की आवश्यकता थी। जब मैं इस पर टिप्पणी करता हूं, तो मैं पुनः कहता हूं, मैं बिना किसी त्रुटि के सूडो को ठीक से चला सकता हूं।

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
fi

क्या आप -वास्तव में एक (ASCII) हैं -?
स्टीलड्राइवर

1
क्या किसी ने aliasआपकी sudoआज्ञा के लिए बनाया है ?
garethTheRed

2
ठीक है, इसलिए आपके पास एक स्थानीय कमांड है जिसे sudoसामान्य सुडो कमांड नहीं कहा जाता है। यह देखते हुए कि यह sudo के विकल्पों को नहीं समझता है, यह स्पष्ट रूप से कुछ मानक बात नहीं है। या तो /usr/bin/sudoअपने स्थानीय प्रशासकों का उपयोग करें या पूछें (जो वास्तव में आपको इस बारे में बताना चाहिए था जब उन्होंने आपको सूद की शक्तियां दी थीं)।
गिल्स एसओ- बुराई को रोकें '

4
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह कुछ अज्ञात, शायद घर में रहने वाले कार्यक्रम की चिंता करता है, जिसके साथ इंटरनेट मदद नहीं कर सकता है।
गिल्स एसओ- बुराई को रोकना '

3
मुझे नहीं लगता कि यह बिल्कुल घर में उगाया जाता है, यह आरएच डेवलपर टूलसेट के CentOS संस्करण है : people.centos.org/tru/devtools-1.1 । शायद इंटरनेट पर किसी को इसके बारे में पता है।
माइकल होमर

जवाबों:


6

टिप्पणियों और आपकी आगे की जांचों से ऐसा लगता है कि आपका भक्तिगीत संशोधित हो रहा है PATH। दुर्भाग्य से इसमें एक पुरानी या टूटी हुई सूडो कमांड शामिल है।

यह आपके .bashrcइस तरह से शामिल किए गए डिवॉल्टसेट को संशोधित करने की कोशिश करने के लायक होगा , और फिर फिर से लॉग इन करें:

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
  PATH=/usr/bin:$PATH    # We need a working sudo
fi

2

SCL के टूटे हुए सूडो रैपर के चारों ओर काम करने के बजाय, मैंने इसे अक्षम कर दिया।

echo >> /opt/rh/devtoolset-2/root/usr/bin/sudo
chmod -x /opt/rh/devtoolset-2/root/usr/bin/sudo

फ़ाइल के अंत में एक नई पंक्ति जोड़ना यह सुनिश्चित करता है कि यह बाद के यम अपडेट द्वारा अधिलेखित नहीं होगा, और फिर मैं इसे गैर-निष्पादन योग्य बनाता हूं।

मैंने आरएचईएल 6 पर जीसीसी और सी ++ के आधुनिक संस्करण प्राप्त करने के लिए देव टूलसेट स्थापित किया है, और मिश्रण में नकली सुडो के बिना कोड संकलित करने के लिए कोई समस्या नहीं है।


1

मैं इसी तरह के मुद्दों के साथ sudo -Eध्वज का उपयोग करता था devtoolset-4 का उपयोग करने के बाद। आपको -Eउस स्थिति में ध्वज नहीं जोड़ना चाहिए , क्योंकि यह /opt/rh/devtoolset-4/root/usr/bin/sudoआवरण स्क्रिप्ट में जोड़ा गया है , यहां इसकी सामग्री दी गई है:

#! /bin/sh
# TODO: parse & pass-through sudo options from $@
sudo_options="-E"

for arg in "$@"
do
   case "$arg" in
    *\'*)
      arg= ;;
   esac
   cmd_options="$cmd_options '$arg'" 
done
exec /usr/bin/sudo $sudo_options LD_LIBRARY_PATH=$LD_LIBRARY_PATH PATH=$PATH scl enable devtoolset-4 "$cmd_options"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.