sudo -i возвращает ошибку


11

Когда я пытаюсь переключиться на root с помощью сообщения sudo -iоб ошибке /var/tmp/sclDvf3Vx: line 8: -i: command not found... Однако, su -работы, которые я буду продолжать использовать. Я ни в коем случае не системный администратор Linux, поэтому среда для меня все еще довольно туманна. Я думаю, мои вопросы:

  1. Почему выдается ошибка?
  2. В чем разница между двумя командами?
  3. Почему вы используете один поверх другого?

Обновить:

Я использую CentOS-версию: CentOS-релиз 6.6 (Final).

Вот результаты некоторых команд, которые мне было предложено выполнить, в комментариях ниже.

  • 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

Обновить:

Это было добавлено к моему не-root пользователю ~ / .bashrc некоторое время назад, потому что мне нужна была поддержка C ++ 11. Когда я закомментирую это, повторно сделаю ssh, я могу запустить sudo -i без ошибок.

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

Вы уверены, что -это действительно (ASCII) -?
SteelDriver

1
Кто-нибудь создал aliasдля вашей sudoкоманды?
garethTheRed

2
Итак, у вас есть локальная команда, sudoкоторая не является нормальной командой sudo. Учитывая, что он не понимает параметров sudo, это явно не стандартная вещь. Или используйте /usr/bin/sudoили спросите своих местных администраторов (которые действительно должны были сказать вам об этом, когда они дали вам полномочия sudo).
Жиль "ТАК - перестань быть злым"

4
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он касается какой-то неизвестной, возможно, доморощенной программы, с которой интернет не может помочь.
Жиль "ТАК - перестань быть злым"

3
Я не думаю, что это вообще доморощенный, это версия CentOS RH Developer Toolset : people.centos.org/tru/devtools-1.1 . Предположительно, кто-то в Интернете знает об этом.
Майкл Гомер

Ответы:


6

Из комментариев и ваших дальнейших исследований похоже, что ваш devtoolset модифицирует PATH. К сожалению, это включает в себя то, что кажется старой или сломанной командой sudo.

Стоит попробовать изменить в вашем файле devtoolset .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

Вместо того, чтобы обойти сломанную оболочку sudo SCL, я просто отключил ее.

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

Добавление новой строки в конец файла гарантирует, что он не будет перезаписан последующими обновлениями Yum, и тогда я просто сделаю его неисполняемым.

Я установил набор инструментов dev для получения современных версий gcc и c ++ на RHEL 6, и у меня не было проблем с компиляцией кода без поддельного sudo в миксе.


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 и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.