【发布时间】:2015-05-29 20:47:24
【问题描述】:
这是一个困扰我一段时间的 linux 问题。在我的工作 linux 机器(运行 RedHat)上,我试图安装一些 Python 包。然而,一些有趣的事情正在发生,见下文:
-
这是我的目标和第一个命令
pip install scrapylib -
这会产生“权限被拒绝”错误
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/scrapylib' -
我的下意识反应是将“sudo”放在完全相同的命令前面...
sudo pip install scrapylib -
这会产生这个异常,
sudo: pip: command not found -
为了解决这个问题,我输入
sudo su - root -
现在这个命令运行 100% 成功
pip2.7 install scrapylib -
终于变回我自己了
sudo su - uspowpow
谁能给我解释一下这个现象?我是一名刚毕业的大学毕业生,除了基本的 Linux 知识外,如果有人能解释为什么在有效命令前放置“sudo”会使其无效,我将非常感激(修复和知识)。
【问题讨论】:
-
改用
sudo /path/to/pip。 -
取决于细节,但请记住,
sudo通常配置为强制使用一组已知安全的环境变量,包括 PATH。这是一个重要的安全功能——想想如果你只允许某人在一个简短的白名单上运行命令,如果他们可以安装环境变量来修改这些命令的行为,会发生什么。 -
顺便说一句,这不是一个真正的编程问题;它更适合superuser.com 或unix.stackexchange.com。
-
顺便说一句,@uspowpow,re (7),最好通过运行
exit改回你。实际上,您仍然保持您的根 shell 处于打开状态且可访问——如果您运行pstree,您将看到原来的 shell,然后是 root 的 shell,然后是一个新的 shell你在这里给出的步骤。
标签: python linux root redhat sudo