【问题标题】:Python Permission Problems UbuntuPython 权限问题 Ubuntu
【发布时间】:2019-05-09 21:34:00
【问题描述】:

我正在尝试运行一个简单的 python 脚本

$python Solution.py read_input.txt

仅当我使用 sudo 时,

$sudo python Solution.py read_input.txt

我收到以下错误消息:

Traceback (most recent call last):
  File "Solution1.py", line 2, in <module>
   import numpy as np
ImportError: No module named numpy

这是由于权限问题。

$which python
/home/andrelandgraf/anaconda3/bin/python

$sudo which python
/usr/bin/python

我想使用我的 anaconda env 来运行文件,但由于权限原因,我无法在没有 sudo 的情况下运行 python,这将导致运行无法访问 numpy 的系统版本的 python。

我尝试了 chmod 和 chown 给 python 所需的权限

$chmod -R 777 .

但每当我在不使用 sudo 的情况下运行 python 时,它只会打印一个空行并且什么也没有发生。

我还检查了我的 .bashrc 文件并回显了 $PATH,anaconda3 似乎安装得很好。

$PATH: /home/andrelandgraf/anaconda3/bin:/home/andrelandgraf/bin:/home/andrelandgraf/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

我该如何解决这个问题?

【问题讨论】:

标签: python ubuntu permissions anaconda


【解决方案1】:

sudo 出于安全原因不使用用户PATH 变量。如果要准确指定要使用的可执行文件,则必须使用绝对路径:

sudo /home/andrelandgraf/anaconda3/bin/python Solution.py read_input.txt

我必须补充一点:只有在 必要 时,你才应该以 root 身份运行程序。在您的问题中,您没有说明为什么需要这样做,因此我们无法通过权限或解决方法帮助您解决问题。


如果您想知道为什么sudo查看用户定义为PATH 的内容,这很简单:如果用户下载了一个名为@987654326 的恶意软件@ 然后调用 sudo ls 会以 root 身份运行恶意软件,这比以非正常用户身份运行恶意软件要糟糕得多。

所以sudo 只查看系统定义的PATH 变量,希望普通用户无法将这样的恶意软件放在系统目录中,因此sudo ls 以root 而不是恶意软件的身份执行普通命令ls

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2018-06-21
    • 1970-01-01
    • 2015-05-19
    • 2015-04-05
    • 2013-11-06
    • 2014-11-04
    相关资源
    最近更新 更多