【问题标题】:python 2.7 not working when I use it with sudo [closed]当我将它与 sudo 一起使用时,python 2.7 不起作用 [关闭]
【发布时间】:2014-09-01 07:20:26
【问题描述】:

我正在尝试在 centos 6.5 的 VM 上安装 python2.7。我按照以下指南安装它

http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/

但是,当我尝试安装 run python as sudo 时,出现以下错误。

-bash: python2.7: command not found

只运行 python2.7 即可。当我以 root 用户身份运行它时,它甚至可以工作。我还注意到:

which python2.7

返回

/usr/bin/which: no python2.7

当我执行 sudo -i 然后运行命令时。

知道为什么会这样吗?

【问题讨论】:

  • python2.7安装在哪里,你的$PATH是什么?
  • 它安装在 /usr/local/bin/python2.7 和 $PATH 是 /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/ sbin:/sbin:/home/yazmataz/bin

标签: linux python-2.7 centos6


【解决方案1】:

如果您使用的是 CentOS 6.5,这可能是因为 sudo 没有将 /usr/local/bin 设置为 PATH 的一部分。

CentOS 6.x 的/etc/sudoers 文件将secure_path(在sudo 会话期间使用)设置为一组非常有限的路径。

使用visudo 命令并查看/etc/sudoers 文件的内容。您可能会找到此部分:

#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

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

所以sudo 不使用/usr/local/bin 路径。

您可以通过以下几种方式解决您的问题:

  1. /usr/local/bin 添加到secure_path - 如果您不知道/usr/local/bin 目录中的内容,这可能会引发安全问题。虽然通常情况下,这可能不是一个大问题,因为默认情况下只有 root 具有对 /usr/local/bin 的写入权限。

  2. 通过将 secure_path 注释掉来完全禁用它 - 再次,您正在覆盖旨在限制访问和提高安全性的功能。

【讨论】:

  • 我想我会选择选项一,因为它似乎更好。更改后我还需要做其他事情吗?喜欢重新加载一些东西?
  • 我已经尝试过您的解决方案,但仍然无法正常工作。我试过重启系统,还是一样。
  • @hjelpmig - 好吧,事实证明,secure_path 会覆盖其他任何内容,因此env_keep 将无效。选择选项#2(或现在编辑的选项#1)。
  • 成功了。非常感谢:)
【解决方案2】:

试试下面的

sudo env PATH=$PATH python2.7

它的作用是将当前路径复制到新的sudo 环境中。

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多