【问题标题】:"sudo command" doesn't work, but "command" as root works“sudo 命令”不起作用,但“命令”作为 root 有效
【发布时间】:2014-04-24 12:28:58
【问题描述】:

我正在尝试在 Ubuntu 12.04 上安装 Phusion Passenger。

当我尝试时:

sudo passenger-install-apache2-module

...我明白了:

sudo: passenger-install-apache2-module: command not found

但是,当我省略 sudo 时,它可以正常工作。此外,当我以 root 身份登录并运行 passenger-install-apache2-module 时,它也可以正常工作。为什么sudo passenger-install-apache2-module 以我的非 root 用户身份登录时不起作用,但以 root 身份登录时却可以正常工作?

【问题讨论】:

  • 以 root 身份尝试:passenger-install-apache2-module 并在此处发布输出。了解命令的具体含义可能会有所帮助。

标签: linux passenger root


【解决方案1】:

这是因为passenger-install-apache2-module 不在您作为普通用户的路径上,而是作为根用户。 (可能在/usr/sbin - 见下文)

以root身份运行which passenger-install-apache2-module,它会告诉你它在哪里(然后你可以使用sudo /full/path/to/passenger-install-apache2-module运行它

sbin 目录(通常为/sbin/usr/sbin)包含用于系统管理的命令。通常,这些需要提升的权限,或者对于普通用户运行它们没有意义。这就是为什么默认情况下这些目录不在普通用户的路径上的原因——它只会把事情弄得一团糟。

【讨论】:

  • 啊,这就解释了。它位于/usr/local/rvm/gems/ruby-1.9.3-p545/bin/passenger-install-apache2-module。考虑到我用gem install passenger(没有sudo)安装它,非root用户找不到它仍然很奇怪。也许我的 rvm 配置不正确(我进行了多用户安装)。