sudo -iがエラーを返す


11

rootに切り替えようとするとsudo -i、エラーが発生します/var/tmp/sclDvf3Vx: line 8: -i: command not found...しかし、su -引き続き使用することはできます。私は決してLinuxシステム管理者ではないので、環境はまだかなりぼんやりしています。私の質問は次のとおりだと思います:

  1. エラーがスローされるのはなぜですか?
  2. 2つのコマンドの違いは何ですか?
  3. なぜどちらを使うのですか?

更新:

CentOSバージョンを使用しています。CentOSリリース6.6(最終)

は、以下のコメントで、実行を要求されたいくつかのコマンドの出力です。

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

更新:

これは、C ++ 11のサポートが必要だったため、しばらく前に非rootユーザーの〜/ .bashrcに追加されました。コメントアウトして、再SSHすると、sudo -iを問題なく実行できます。

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

これ-は本当に(ASCII)-ですか?
steeldriver 2015年

1
誰かaliasがあなたのsudoコマンドを作成しましたか?
garethTheRed 2015年

2
sudoでは、通常のsudoコマンドではないローカルコマンドを呼び出しました。sudoのオプションを理解しないことを考えると、それは明らかに標準的なものではありません。使用する/usr/bin/sudoか、ローカル管理者に問い合わせてください(sudo権限を与えられたときに、このことについて実際に通知していたはずです)。
Gilles「SO-邪悪になるのをやめる」2015

4
この質問はトピックから外れるものとして締めくくります。インターネットが役に立たない、おそらく不明な、おそらくは自社開発のプログラムに関するものです。
Gilles「SO-邪悪なことをやめなさい」2015

3
これは自家製ではないと思います。これはCentOSのRH Developer Toolsetのバージョンです:people.centos.org/tru/devtools-1.1。おそらくインターネット上の誰かがそれについて知っています。
Michael Homer

回答:


6

コメントと詳細な調査から、devtoolsetがを変更しているようPATHです。残念ながら、これには古いまたは壊れたsudoコマンドのように見えるものが含まれます。

devtoolset includeを次の.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の壊れたsudoラッパーを回避するのではなく、単に無効にしました。

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

ファイルの最後に改行を追加すると、その後のYumの更新によって上書きされないようになり、実行不可にできます。

RHEL 6でgccとc ++の最新バージョンを取得するために開発ツールセットをインストールしましたが、偽のsudoが含まれていないコードのコンパイルには問題がありませんでした。


1

sudo -Edevtoolset-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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.