【问题标题】:Why does the building from Binary files do not require Root access?为什么从二进制文件构建不需要 Root 访问权限?
【发布时间】:2009-04-27 00:55:31
【问题描述】:

当我在我部门的服务器中时,我无法使用诸如“apt-get install nethack”之类的命令。我必须从二进制文件构建 nethack 才能使其正常工作,至少有人告诉我。我无法理解原因。为什么我需要从二进制文件构建东西?为什么禁止使用诸如“apt-get”之类的命令?为什么我不需要 Root 访问权限即可从二进制文件构建?

【问题讨论】:

  • 你的意思是“从源文件构建”吗?
  • 你可能是对的。我可能混淆了这些术语,因为人们谈论二进制文件实际上是指将可读代码(源文件?)转换为二进制文件(0 和 1)。虽然我的观察可能是错误的。

标签: sysadmin binaryfiles


【解决方案1】:

apt-get 是为所有用户安装软件包的系统级命令。

如果您下载并编译,您只会创建二进制文件的本地“副本”,而不是系统范围的。如果您尝试使用make install 完成安装过程,这很可能会失败,因为您没有足够的权限来安装程序以供所有用户访问(同样的原因您不能运行apt-get install)

【讨论】:

  • 我有兴趣了解有关系统范围命令的更多信息。这是否意味着程序不能使用系统范围的命令?让我们换个角度来看,是否可以从源文件构建程序以访问系统范围的命令?
  • 这是存储权限的问题。当你“安装”一个程序时,你将它复制到一个所有用户都可以访问的位置——很可能包含在默认的 $PATH 环境中。多变的。只有特权用户才能写入此位置。
  • 安装系统范围的命令与执行系统范围的命令是两件不同的事情。执行某些命令也需要“root”或“超级用户”权限。
  • 你的意思是拥有超级用户权限 sudo 用户?
  • 是的,我会说“sodoers”是“权力”或“特权”用户。
【解决方案2】:

当你从源代码编译一个程序时,你可以给它'--prefix=~/'。这会导致它相对于您自己的主目录安装(因此二进制程序通常以“~/bin”结尾,手册页在“~/man”等)。这不会造成任何问题,因为您已经拥有在此处写字的权限。

另一方面,Apt-get 将软件包安装在全局文件系统('/bin/'、'/usr/bin/'等)中,这可能会影响其他用户,因此非常正确地需要管理访问权限。

如果你想安装一些程序,你可以使用命令

apt-get source app-name

这个将即使你不是root也能工作,因为它只会将源代码提取到app-name并将其放在当前目录中,这比必须追踪源代码和有更好的机会让它工作,因为你下载了应该在你的系统上工作的版本。

或者,您应该让系统管理员安装您需要的程序,因为这是他的工作(如果您需要它们,您团队的其他成员可能也会这样做)。

【讨论】:

    【解决方案3】:

    因为 apt-get 会在系统范围内安装程序。

    【讨论】:

      【解决方案4】:

      apt-get 写入已安装文件的位置(/bin、/usr/bin、...)仅限于 root 访问。我想当您从源代码构建时,您不会执行 bulid 的安装步骤。您将需要为安装设置一个前缀,以便软件包最终出现在您可以编写的地方。 This thread 谈到了为 apt-get 设置前缀,您可能希望将前缀设置为类似

      ~/software/
      

      然后将生成的 bin 目录添加到您的 PATH。

      【讨论】:

        猜你喜欢
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 2020-06-02
        • 2020-04-30
        • 1970-01-01
        • 2020-09-17
        • 1970-01-01
        • 2020-04-19
        相关资源
        最近更新 更多