在 pacman 和 apt 等包管理器中,根检查使用 guid 检查硬编码到源代码中。为什么是这样?
非特权用户可以将程序(例如 chromium 浏览器)从源代码编译到伪根目录(在用户目录内)并运行它。用户甚至可以下载预编译的二进制文件并运行它。为什么不让用户使用包管理器直接将软件安装到伪根目录(在用户主目录内)而不进行权限升级?
IMO 包管理器仅在将文件写入 root 拥有的目录时才需要 sudo。例如 /bin 或 /etc。
如果我忽略了一些安全问题,请告诉我。
注意:一些研究表明,确实存在用于用户空间的备用包管理器。 无需root权限的包管理 https://askubuntu.com/questions/339 非根包管理器
我的问题仍然是 - 为什么本机包管理器不支持这样的用例 - 本来是一个更优雅的实现。
答案1
包管理器需要以 root 身份运行,因为它们所做的事情会影响所有用户。
IMO 包管理器仅在将文件写入 root 拥有的目录时才需要 sudo。例如 /bin 或 /etc。
它们还需要 root 访问权限来管理已安装软件包的数据库。
在用户主目录下安装软件的包管理器不需要以 root 身份运行。
为什么大多数包管理器不允许您在主目录下安装程序?因为依赖管理很困难。根据我的经验,大多数人都低估了这一点。当软件在系统范围内安装时,只需考虑一组依赖项。当您混合系统范围的软件(至少是运行包管理器所需的库!)和仅限用户的软件时,依赖关系会变得更难以管理。
答案2
包管理器是修复和破坏系统的强大工具。
在检查所有操作的权限时,询问 root 权限会更容易。