Eye*_*ech 0 linux sudo administrator python
我是 Linux 的新手(如果重要的话,是 Ubuntu)。我的公司在一台机器上有几个 sudo 用户。情况是这样的:
每个人都想要 sudo 用户权限,因为他们声称他们需要在工作期间安装 python 包(他们是 AI 工程师)
每个用户都在他们的主文件夹中保存私人 rsa 密钥以快速拉/推到 github。
所以理论上,如果一个 sudo 用户走红了,他可以抓住每个人的私钥并强加他们并提取他无权获得的源代码。我如何防止这种情况发生?
谢谢
我不会直接回答你的问题,因为你在描述一个XY 问题。这是您潜在的实际问题:
每个人都想要 sudo 用户权限,因为他们声称他们需要在工作期间安装 python 包
问题是:没有人需要使用sudo来安装 Python 包。事实上,这是非常不鼓励的。特别是如果有多人使用同一个系统,则无法阻止任何人使用其他人可能需要的系统级软件包。如果存在版本冲突、某些包中的重大更改等怎么办?
真正的解决方案是使用 Python 包的用户级安装。也就是说,而不是sudo pip install …,做:
pip install --user pandas
Run Code Online (Sandbox Code Playgroud)
这会将软件包安装到相应用户的主目录中,而不会单独保留系统软件包库。
我再怎么强调都不为过:使用sudowith没有任何好处pip。
一个更好的解决方案是使用pipenvor poetry,它为包创建一个虚拟环境。
对于不同的项目,包和版本甚至可以不同——如果你需要一个包在给定的版本上停留一段时间,这一点尤其重要(例如pandas,因更改其 API而臭名昭著;scipy不久前发生了一些重大变化,......) .
我会推荐 Pipenv,但截至 2020 年,维护已经相当缺乏,而且已经很久没有发布了。
要使用 Poetry,只需在每个用户级别安装它:
pip install --user poetry
Run Code Online (Sandbox Code Playgroud)
然后为当前项目初始化一个新环境:
cd /path/to/project
poetry install pandas
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的 Poetry 配置文件,指定当前项目的要求。运行poetry以了解更多信息或阅读文档。
pyenv最好的方法是让用户安装他们自己的 Python 版本。您可以pyenv用来创建整个 Python 发行版的用户级安装。这样,用户可以使用他们的 Pipenv 项目初始化时使用的任何 Python 版本,例如,在他们想要升级到 3.8 之前保持 3.7 一段时间。
如果您不想通过执行 Python 的系统级小升级来破坏每个人的软件包,这将特别好,如果需要的话。
底线:如果您不需要,不要给普通用户 sudo 访问权限。让他们使用自己的用户空间来安装 Python 和/或 Python 包。
警告:某些 Python 包可能需要特定的库才能成功构建。您无法真正避免这些库的系统级安装,但在这种极少数情况下,管理员可能愿意安装需要的sudo apt install …任何库。
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |