【问题标题】:sudo: (whatever): command not found on RHEL 5.8 [closed]sudo:(无论如何):在 RHEL 5.8 上找不到命令 [关闭]
【发布时间】:2014-04-01 21:32:03
【问题描述】:

每当我尝试使用 sudo 用户(例如“sudo ifconfig”)运行 /sbin/ 中存在的任何命令时,都会收到错误消息 sudo: ifconfig: command not found。

我将sbin的路径添加到PATH中

  export PATH=$PATH:/sbin

它工作正常,但是当我更改终端或重新启动时,PATH 会重置。如何永久添加 PATH 变量的路径?

我是否也错过了其他东西?

【问题讨论】:

  • 你使用的是哪个外壳?
  • @jaypal:没用
  • @leeduhem: bash 外壳
  • @Pradeep 请参考我的回答。

标签: linux bash shell path sudo


【解决方案1】:

如果你使用bash,你可以追加

export PATH=$PATH:/sbin

到您的~/.bashrc 以将/sbin 永久添加到您的$PATH


sudo -l 可用于列出调用用户允许的命令,它还显示安全路径。

sudo -l 在我的 Fedora 19 系统上给出了这个:

$ sudo -l
    ...
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

sudo printenv PATH 给出相同的结果:

$ sudo printenv PATH
/sbin:/bin:/usr/sbin:/usr/bin

secure_path 设置在/etc/sudoers

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

我的sudo 版本:

$ sudo -V
Sudo version 1.8.6p7
Sudoers policy plugin version 1.8.6p7
Sudoers file grammar version 42
Sudoers I/O plugin version 1.8.6p7

【讨论】:

  • 我尝试追加到 ~/.bashrc,但出现权限被拒绝错误
  • 你的命令是什么,确切的错误信息是什么?
  • 当我得到权限被拒绝错误时,我试图以 root "cat ~/.bashrc" 的身份查看文件。如何将 /sbin 永久添加到 sudouser 的 PATH “sudo printenv” - PATH 中没有 /sbin
  • @Pradeep 您的sudo 好像坏了。你的sudo -l 输出是什么?
  • @Pradeep root 用户将绕过正常的 Linux 文件权限,因此作为 root,您的 cat ~/.bashrc 不应给出权限被拒绝错误。您是否在系统中启用 SELinux 或类似功能?
【解决方案2】:

sudo 下执行的命令不会继承您的大部分环境,尤其是您的$PATH

要查看继承了什么,请尝试运行

sudo printenv

如果您想执行不在sudo 的默认$PATH 中的命令,则必须在命令本身中更新$PATH 或指定完整路径名命令。

您也可以使用-E 通过sudo 传播您当前的环境,但这并不总是允许的。

另见/etc/sudoers,可用于配置sudoman sudo的行为。

sudo -l 还会显示有用的信息,包括您可以执行的命令以及有关环境的一些(但不是全部)信息。

【讨论】:

  • sudo -l 可用于列出调用用户允许的命令。
猜你喜欢
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2014-04-26
  • 2019-04-05
  • 2018-06-11
  • 1970-01-01
  • 2013-08-28
  • 2014-07-06
相关资源
最近更新 更多