web-dev-qa-db-ja.com

sudo-iはエラーを返します

Sudo -iを使用してrootに切り替えようとすると、エラー/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
11
th3v0id

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

次のように.bashrcに含まれるdevtoolsetインクルードを変​​更してから、再度ログインすることをお勧めします。

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

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が含まれていないコードをコンパイルしても問題はありませんでした。

2
miken32

Devtoolset-4を使用した後、Sudo -Eフラグで同様の問題が発生しました。その場合、-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"
1
Vadim Kotov
RUN set -o errexit -o nounset \
    && echo "Downloading Gradle" \
    && wget --no-verbose --output-document=gradle.Zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.Zip" \
diff --git a/gradle_latest/Dockerfile b/gradle_latest/Dockerfile
index 6d9fb34..a237d06 100644
--- a/gradle_latest/Dockerfile
+++ b/gradle_latest/Dockerfile
@@ -3,9 +3,9 @@ FROM openjdk:8-jdk
 CMD ["gradle"]

 ENV GRADLE_HOME /opt/gradle
-ENV GRADLE_VERSION 4.3.1
+ENV GRADLE_VERSION 4.4

-ARG GRADLE_DOWNLOAD_SHA256=15ebe098ce0392a2d06d252bff24143cc88c4e963346582c8d88814758d93ac7
+ARG GRADLE_DOWNLOAD_SHA256=fa4873ae2c7f5e8c02ec6948ba95848cedced6134772a0169718eadcb39e0a2f
 RUN set -o errexit -o nounset \
    && echo "Downloading Gradle" \
    && wget --no-verbose --output-document=gradle.Zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.Zip" \
—
0