sudo -i devuelve un error

11

Cuando intento cambiar a root usando, sudo -iaparece el error /var/tmp/sclDvf3Vx: line 8: -i: command not found... Sin embargo, su -funciona y continuaré usando. De ninguna manera soy un administrador de sistemas de Linux, por lo que el entorno sigue siendo muy confuso para mí. Supongo que mis preguntas son:

  1. ¿Por qué se lanza el error?
  2. ¿Cuál es la diferencia entre los dos comandos?
  3. ¿Por qué usarías uno sobre el otro?

Actualizar:

Estoy usando la versión CentOS: CentOS versión 6.6 (Final)

Aquí está la salida de algunos comandos que me pidieron que ejecutara, en los comentarios a continuación.

  • 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

Actualizar:

Esto se agregó a mi usuario no root ~ / .bashrc hace un tiempo porque necesitaba compatibilidad con C ++ 11. Cuando lo comento, re-ssh, puedo ejecutar sudo -i sin ningún error.

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
fi
th3v0id
fuente
¿Estás seguro de que -es realmente un (ASCII) -?
steeldriver
1
¿Alguien ha creado un aliaspara su sudocomando?
garethTheRed
2
Ok, entonces tienes un comando local llamado sudoque no es el comando sudo normal. Dado que no comprende las opciones de sudo, claramente no es algo estándar. Utilice /usr/bin/sudoo pregunte a sus administradores locales (que realmente deberían haberle dicho esto cuando le dieron poderes de sudo).
Gilles 'SO- deja de ser malvado'
44
Estoy votando para cerrar esta pregunta como fuera de tema porque se trata de algún programa desconocido, probablemente de cosecha propia, con el que Internet no puede ayudar.
Gilles 'SO- deja de ser malvado'
3
No creo que esto sea de cosecha propia, es la versión de CentOS de RH Developer Toolset : people.centos.org/tru/devtools-1.1 . Presumiblemente, alguien en Internet sí lo sabe.
Michael Homer

Respuestas:

6

De los comentarios y sus investigaciones posteriores, parece que su conjunto de herramientas está modificando el PATH. Desafortunadamente, eso incluye lo que parece ser un comando sudo viejo o roto.

Valdría la pena intentar modificar el conjunto de herramientas de desarrollo incluido en su .bashrcestilo, y luego volver a iniciar sesión:

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

En lugar de evitar el envoltorio de sudo roto del SCL, simplemente lo desactivé.

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

Agregar una nueva línea al final del archivo asegura que no se sobrescribirá con las actualizaciones posteriores de Yum, y luego lo hago no ejecutable.

Instalé el conjunto de herramientas de desarrollo para obtener versiones modernas de gcc y c ++ en RHEL 6, y no he tenido problemas para compilar código sin el sudo falso en la mezcla.

miken32
fuente
1

Tuve problemas similares con sudo -Eflag después de usar devtoolset-4. No debe agregar una -Emarca en ese caso, ya que se agrega en la /opt/rh/devtoolset-4/root/usr/bin/sudosecuencia de comandos de envoltura, aquí está el contenido de la misma:

#! /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"
Vadim Kotov
fuente