当我将它与 sudo 一起使用时,python 2.7 不起作用 [关闭]

Posted

技术标签:

【中文标题】当我将它与 sudo 一起使用时,python 2.7 不起作用 [关闭]【英文标题】:python 2.7 not working when I use it with sudo [closed] 【发布时间】: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 【参考方案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 路径。

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

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

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

【讨论】:

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

试试下面的

sudo env PATH=$PATH python2.7

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

【讨论】:

以上是关于当我将它与 sudo 一起使用时,python 2.7 不起作用 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

解析:如果我将它与指针类型一起使用,“containedIn”将不返回任何内容

TextInput 在本机反应中不起作用我将它与堆栈导航一起使用

将pytest与xdist一起使用时如何打印输出

当我将 ImageView 添加到 CardView 或 Fragment 时,为啥我的应用程序会崩溃?

如何将嵌入查询与 wordpress rest api 一起使用?

为啥我在尝试将它与目标 c 一起使用时会收到错误消息,即我的 json 末尾有垃圾?