为什么没有像 Android 或 iOS 这样的权限?

sta*_*tor 26 security permissions software-installation

当我在 Linux 上安装 GIMP 或 LibreOffice 之类的程序时,我从不询问权限。通过在 Ubuntu 上安装程序,我是否明确授予该程序完全权限以读取/写入我驱动器上的任何位置并完全访问互联网?

从理论上讲,GIMP 可以读取或删除我驱动器上的任何目录,而不需要 sudo 类型的密码吗?

我只是好奇这在技术上是否可行,而不是是否可能。当然,我知道这不太可能。

xen*_*oid 31

这里有两件事:

  • 当您通过标准方式(系统安装程序,例如 Ubuntu 上的 apt/apt-get)安装程序时,它通常安装在所有用户都可以使用的某个目录中(/usr/bin...)。此目录需要写入权限,因此您在安装过程中需要特殊权限。

  • 当您使用该程序时,它会使用您的用户 ID 运行,并且只能读取或写入允许使用您的 ID 执行的程序读取或写入的位置。例如,在 Gimp 的情况下,您会发现您无法编辑画笔等标准资源,因为它们在共享中/usr/share/gimp/,您必须先复制它们。这也显示了Edit>Preferences>Folders大多数文件夹成对出现的位置,一个是只读的系统文件夹和一个可以写入的用户文件夹。

  • 一旦安装了程序,它是如何安装的就变得无关紧要了。唯一重要的是它在哪个用户 ID 下运行((换句话说,谁在使用它)然后它假定与同一用户运行的所有其他程序相同的访问权限。 (17认同)
  • @xenoid 除非该程序安装为 root 拥有并启用了 setuid 位。在这种情况下,该程序以 root 身份运行,尽管被其他人使用。 (3认同)
  • 是的,没有什么新鲜事,这就是为什么有存储库......即使没有 setuid 位和安装的软件也可以做很多其他讨厌的事情,比如 `rm -rf ~/`。如果您从其他来源安装,则必须小心(或在代码检查后从来源安装)。 (3认同)
  • 是的,全部 18 个:mount/umount/ping/sudo... (2认同)
  • @xenoid,我认为重要的一点是安装软件包并没有明确要求您获得安装 setuid 二进制文件的许可。相反,包中的任何内容都会被安装,如果涉及特权程序,您只需要通过其他方式“知道”。您完全依赖于打包程序来确保包与文档匹配并且在其他方​​面是安全的等,包管理器实用程序在那里没有任何帮助。 (2认同)

use*_*751 23

通过在 Ubuntu 上安装程序,我是否明确授予该程序在我的驱动器上的任何地方读/写的完全权限以及对 Internet 的完全访问权限?

是的,如果您使用sudo或等效,则您授予安装程序在驱动器上的任何位置读/写的完全权限。这主要是同一件事。还有一个安装程序可以设置的标志,称为 setuid,这将使程序在安装后也具有完全权限。

即使我们忽略安装程序并且程序不是 setuid(程序很少使用 setuid),当您运行该程序时,它也可以完全访问您的帐户可以访问的任何内容。例如,如果您登录了您的网上银行,它可以假设您将所有资金发送到尼日利亚。

为什么没有像 Android 或 iOS 这样的权限?

Linux 中的安全模型——即安全系统的设计方式——非常古老。它继承自 Unix,可追溯到 1960 年代。那时,没有互联网,一个部门的大多数人都使用同一台电脑。你的大部分程序来自值得信赖的大公司。因此,安全系统旨在保护用户免受他人侵害,而不是保护用户免受他们运行的程序的侵害。

如今,它已经过时了。Android 基于 Linux,但它的工作原理是为每个应用程序创建一个单独的“用户帐户”,而不是为每个用户创建一个单独的“用户帐户”。我不知道iOS使用什么。像 Flatpak 这样的努力目前正试图将类似的东西带到 Linux 桌面。

  • 这实际上是作为单独的非特权用户运行潜在可利用代码并希望操作系统中没有特权升级漏洞的一个论据。或者码头工人。 (2认同)

sou*_*edi 9

您想要的是由 Flatpack 应用程序提供的。它们与 iOS、Android 或 Windows 应用商店应用非常相似。

我还没有使用它们,所以我不知道他们是否已经实现了 GUI,以查看每个应用程序在安装时所需的权限。

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

每个 flatpak 应用程序都包含一个清单,称为元数据。此文件描述了应用程序的详细信息,例如其身份 (app-id) 以及它使用的运行时。它还列出了应用程序所需的权限。

默认情况下,一旦安装,应用程序将获得它请求的所有权限。但是,您可以在每次调用 flatpak run 时或通过使用 flatpak override 在每个应用程序的基础上全局覆盖权限(有关详细信息,请参阅 flatpak-run 和 flatpak-override 的联机帮助页)。应用程序权限的处理目前在界面中有些隐藏,但长期计划是在安装期间显示权限并使其更容易覆盖。

我也没有使用 Ubuntu 的替代品 Snappy 来了解它是否提供了在 GUI 中可见的这种功能。

  • Web 应用程序是解决此问题的更标准的解决方案,尽管在许多情况下效率低下令人恼火。任何流行的 Web 浏览器都是高度通用且经过全面测试的沙箱。 (2认同)

all*_*llo 6

这在技术上是可行和解决方案包括apparmorselinuxfirejail甚至全集装箱喜欢LXC或完整的虚拟机(例如VirtualBoxkvmvmware)。对于网络,有opensnitch一个littlesnitch来自 OSX的程序的克隆。

没有用户授予权限的广泛安全模型的原因是,传统上您对在 PC 上运行的内容非常小心。移动系统应用商店中 90% 的内容将被视为 PC 上的恶意软件。

有针对广告软件(即 adaware 或 Spybot D&D)的扫描仪,它们会将连接 Facebook、谷歌分析和广告网络等行为归类为 PC 上的恶意软件。当涉及到这些事情时,移动生态系统就像计算的整体重启。每个人都捆绑广告软件,只是因为它很容易并添加了分析,只是因为他很好奇。副作用是隐私和安全性降低。安全部分由沙箱模型解决,隐私部分仍然是一个悬而未决的问题。

另一个在 PC 上没有长时间使用它的原因是沙箱的复杂性,这意味着它对于以前的旧 PC 来说可能太慢了,并且需要更多的工程来处理当时几乎没有优势的东西。

今天,我们看到有人尝试在 snap 和 flatpak 等新包格式中使用沙箱,浏览器也将其用于扩展。Chromium 从一开始就使用权限模型,而 Firefox 为所有 webextensions 使用一个权限模型(自 57 以来,您可以安装唯一的扩展程序)。这是很合理的,因为人们安装了未知作者的浏览器扩展程序就像他们从未听说过的人的应用程序一样,认为它们并不比他们访问的网站更危险,当没有沙箱保护他们时,这是一个致命的误解。