sudo -i返回错误


11

当我尝试使用root切换到root时sudo -i,出现错误/var/tmp/sclDvf3Vx: line 8: -i: command not found...但是,su -我将继续使用的作品。我绝不是Linux系统管理员,因此环境对我来说仍然很模糊。我想我的问题是:

  1. 为什么会引发错误?
  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)-吗?
钢铁司机

1
有人alias为您的sudo命令创建了吗?
garethTheRed

2
好的,所以您有一个称为本地命令sudo,这不是普通的sudo命令。鉴于它不了解sudo的选项,因此这显然不是标准的事情。请使用/usr/bin/sudo或询问您的本地管理员(当他们给您sudo权限时,他们应该真的告诉过您)。
吉尔斯(Gillles)“所以-别再邪恶了”

4
我投票结束这个题为离题的问题,因为它涉及一些未知的,可能是本地开发的程序,互联网无法帮助解决该问题。
吉尔斯(Gillles)“所以-别再邪恶了”

3
我认为这根本不是本地生产的,它是CentOS的RH Developer Toolset版本:people.centos.org/tru/devtools-1.1。大概是互联网上有人知道这一点。
Michael Homer

Answers:


6

从评论和进一步的调查看来,您的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

2

我只是禁用了它,而不是解决SCL损坏的sudo包装器。

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

在文件末尾添加换行符可确保以后的Yum更新不会覆盖换行符,然后我将其设为不可执行。

我安装了dev工具集,以便在RHEL 6上获得gcc和c ++的现代版本,并且在没有伪造的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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.