sudo -i retorna um erro


11

Quando tento mudar para root usando, sudo -irecebo o erro /var/tmp/sclDvf3Vx: line 8: -i: command not found... No entanto, su -funciona que continuarei a usar. Eu não sou de forma alguma um administrador de sistema Linux, então o ambiente ainda está bastante nebuloso para mim. Eu acho que minhas perguntas são:

  1. Por que o erro está sendo lançado?
  2. Qual é a diferença entre os dois comandos?
  3. Por que você usaria um sobre o outro?

Atualizar:

Estou usando a versão CentOS: CentOS release 6.6 (Final)

Aqui está a saída de alguns comandos que me pediram para executar, nos comentários abaixo.

  • 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

Atualizar:

Isso foi adicionado ao meu usuário não root ~ / .bashrc há um tempo, porque eu precisava de suporte ao C ++ 11. Quando eu comento, re-ssh in, posso executar o sudo -i sem problemas.

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

Tem certeza de que -é realmente um (ASCII) -?
steeldriver

1
Alguém criou um aliaspara o seu sudocomando?
garethTheRed

2
Ok, então você tem um comando local chamado sudoque não é o comando sudo normal. Dado que ele não entende as opções do sudo, claramente não é algo padrão. Use /usr/bin/sudoou pergunte aos administradores locais (quem realmente deveria ter lhe contado isso quando lhe deram poderes de sudo).
Gilles 'SO- stop be evil'

4
Estou votando para encerrar esta questão como fora de tópico porque se refere a algum programa desconhecido, provavelmente caseiro, com o qual a Internet não pode ajudar.
Gilles 'SO- stop be evil'

3
Eu não acho que isso seja feito em casa, é a versão do CentOS do RH Developer Toolset : people.centos.org/tru/devtools-1.1 . Presumivelmente, alguém na internet sabe disso.
Michael Homer

Respostas:


6

A partir dos comentários e de suas investigações adicionais, parece que o seu devtoolset está modificando o PATH. Infelizmente, isso inclui o que parece ser um comando sudo antigo ou quebrado.

Vale a pena tentar modificar o include do devtoolset .bashrcassim, e depois efetuar login novamente:

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

2

Em vez de contornar o wrapper sudo quebrado do SCL, apenas o desativei.

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

Adicionar uma nova linha ao final do arquivo garante que ele não seja sobrescrito pelas atualizações subseqüentes do Yum, e então eu o deixo não executável.

Instalei o conjunto de ferramentas de desenvolvimento para obter versões modernas do gcc e do c ++ no RHEL 6 e não tive problemas ao compilar o código sem o sudo falso no mix.


1

Eu tive problemas semelhantes com o sudo -Esinalizador depois de usar o devtoolset-4. Você não deve adicionar -Esinalizador nesse caso, porque é adicionado no /opt/rh/devtoolset-4/root/usr/bin/sudoscript do wrapper, eis o conteúdo dele:

#! /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"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.