我对网络安全和 CTF 很感兴趣,在 CTF 中,你需要各种工具来帮助你。例如,John The Ripper,一个密码破解工具。我不确定我是否真的想让 John 在我的电脑上的任何位置都可以访问,我不想让事情变得混乱。幸运的是,在这个例子中(我不知道所有的技术术语,不要把我钉在十字架上),我用 git 安装了 John,并在一个目录中配置了该程序,然后从该目录执行命令。如果我执行“ls”,它只会给我一个我可以使用命令的列表,我可以从那里操作。所有工具都有这个选项吗?通常教程建议使用 pip install 或 snap install,但这些似乎安装到我的整个计算机,所以我安装的程序中的命令可以从任何地方访问。有没有办法让我使用 pip 或 snap 只安装到一个目录,就像我使用 git 安装 John 时一样?
答案1
实际情况并非如您所想象的那样——套装软件通常是面向所有用户的。
安装后,您可以将二进制文件从公共位置(如 /usr/bin/foo)移动到私有位置(如 /home/USERNAME/bin/foo)。您还可以修改权限,以便只有您可以执行它。但是,这些操作会破坏(例如)apt:没有软件包升级,没有简单的干净卸载路径,任何错误都会中止整个 apt 队列。
请考虑以下任一方法:1)从源代码手动安装,这样您就可以包含您的自定义内容;2)使用 AppImage 版本的软件(确实保留在一个地方);或者 3)使用私有 LXC/D 容器或 VM,这样您就可以使用 apt/pip。
当然,使用 Python,你也可以使用 4)virtualenv(venv)。
答案2
我对网络安全和 CTF 感兴趣,在 CTF 中你需要各种工具来帮助你。
这就是 Python 虚拟环境(例如 virtualenv )的作用python-virtualenv和python3-virtualenv) 是用于。virtualenv 实用程序创建虚拟 Python 实例,每个实例都可以通过自己的 Python 可执行文件调用。每个实例可以有不同的模块集。虚拟 Python 实例也可以创建无需root权限。
要设置和使用 Python 虚拟环境,请按照如何在 Ubuntu 中设置和使用虚拟 Python 环境?或更新的说明这个答案。
pip 通常从Python 包索引(PyPI)。Python 软件包索引 (PyPI) 是 Python 编程语言的软件存储库。任何人都可以将自己的 Python 软件包上传到 PyPI。PyPI 中可用的软件包没有太多监督,因此,除非您完全确定自己在做什么,否则您的保护措施是在 python 虚拟环境中使用 pip 安装软件包,而不是使用 sudo 全局安装。否则,您可能会向某些开发人员的编程错误授予 root 访问权限。这违背了您将程序仅安装程序到一个目录的目标,但您得到的回报是更安全的系统,从网络安全的角度来看,这正是您想要的。
从:安装用户应用程序时,“最佳实践”建议将它们放置在哪里?:
有时我会手动安装应用程序,而不是使用 apt 或其他包管理器。“最佳实践”建议将用户应用程序安装在哪个位置(
/usr/
、/usr/local/
、/opt/
、等)?/home/
根据顶部接受的答案:如果应用程序有 makefile,或者例如对于 python 应用程序,如果应用程序使用 distutils(例如,有一个 setup.py 文件),或类似的构建/安装系统,则应将其安装到 中/usr/local/
。这通常是默认行为。