当我在Linux上安装GIMP或LibreOffice之类的程序时,我从未被询问过权限。通过在Ubuntu上安装程序,我是否明确授予该程序对驱动器上任何位置的读/写权限以及对Internet的完全访问权限?
从理论上讲,GIMP可以读取或删除驱动器上的任何目录,而不需要sudo类型的密码吗?
我只是好奇这在技术上是否可行,而不是在可能与否之间。当然,我知道这不太可能。
当我在Linux上安装GIMP或LibreOffice之类的程序时,我从未被询问过权限。通过在Ubuntu上安装程序,我是否明确授予该程序对驱动器上任何位置的读/写权限以及对Internet的完全访问权限?
从理论上讲,GIMP可以读取或删除驱动器上的任何目录,而不需要sudo类型的密码吗?
我只是好奇这在技术上是否可行,而不是在可能与否之间。当然,我知道这不太可能。
Answers:
这里有两件事:
当您以标准方式安装程序时(系统安装程序,如Ubuntu上的apt / apt-get),通常将其安装在所有用户可用的某个目录下(/ usr / bin ...)。此目录需要写入特权,因此在安装过程中需要特殊特权。
当您使用该程序时,它将以您的用户ID运行,并且只能在允许以您的ID执行的程序进行读写的情况下进行读取或写入。对于Gimp,例如,您会发现您无法编辑标准资源(例如画笔),因为它们在共享资源中/usr/share/gimp/
,因此您必须先复制它们。这还显示了Edit>Preferences>Folders
大多数文件夹成对出现的位置,一个只读的系统文件夹和一个可以写入的用户文件夹。
rm -rf ~/
。如果从其他来源安装,则必须小心(或在检查代码后从来源安装)。
通过在Ubuntu上安装程序,我是否已明确授予该程序对驱动器上任何位置的读/写权限以及对Internet的完全访问权限?
是的,如果您使用sudo
或等效版本,则表示已授予安装程序完全权限,可以在驱动器上的任何位置进行读取/写入。这基本上是同一件事。安装程序还可以设置一个标志,称为setuid,这将使程序在安装后也具有完全权限。
即使我们忽略安装程序,并且该程序不是setuid(程序很少使用setuid),在您运行该程序时,它也可以完全访问您的帐户可以访问的任何内容。例如,如果您登录到网上银行,则可能会将所有资金发送到尼日利亚。
为什么没有像Android或iOS这样的权限?
在Linux中,安全模型(即安全系统的设计方式)非常古老。它是从Unix继承的,可追溯到1960年代。那时没有互联网,一个部门中的大多数人都使用同一台计算机。您的大多数程序来自受信任的大公司。因此,该安全系统旨在保护用户彼此之间,而不是保护用户免受其运行的程序的侵害。
如今,它已经过时了。Android基于Linux,但是它通过为每个应用程序(而不是每个用户)创建一个单独的“用户帐户”来工作。我不知道iOS使用什么。Flatpak之类的工作目前正在尝试将相同的东西引入Linux桌面。
Flatpack应用程序正在提供您想要的东西。这些非常相当于iOS,Android或Windows Store应用程序。
我还没有使用过它们,所以我不知道它们是否已经实现了GUI,以便在安装每个应用程序时查看它们所需的权限。
每个flatpak应用程序都包含一个称为元数据的清单。该文件描述了应用程序的详细信息,例如其身份(app-id)以及使用的运行时。它还列出了应用程序所需的权限。
默认情况下,安装后,应用程序将获得其请求的所有权限。但是,您可以在每次调用flatpak运行时或通过使用flatpak覆盖在每个应用程序中全局调用覆盖权限(有关详细信息,请参见flatpak-run和flatpak-override的联机帮助页)。当前,应用程序权限的处理在界面中有些隐藏,但是长期计划是在安装过程中显示权限,并使其更容易覆盖它们。
我还没有使用过Ubuntu的替代产品Snappy,来知道它是否提供了在GUI中可见的功能。
这在技术上是可行和解决方案包括apparmor
,selinux
和firejail
甚至全集装箱喜欢LXC
或完整的虚拟机(例如VirtualBox
,kvm
或vmware
)。对于联网,有opensnitch
一个littlesnitch
OSX程序的克隆。
没有广泛的具有用户权限的安全模型的原因是,传统上您要小心在PC上运行的内容。移动系统应用商店中90%的内容将被视为PC上的恶意软件。
有用于广告软件(例如adaware或Spybot D&D)的扫描仪,它们会将PC,Google Analytics(分析)和广告网络之类的行为分类为PC上的恶意软件。当涉及到这些事情时,移动生态系统就像是整个计算的重新启动。每个人都将广告软件捆绑在一起,只是因为它很容易,并且因为他很好奇而添加了分析功能。副作用是隐私和安全性下降。安全部分由沙箱模型负责,隐私部分仍然是一个未解决的问题。
长时间没有在PC上使用此功能的另一个原因是沙箱的复杂性,这意味着一段时间前对于较旧的PC来说,两者可能都太慢了,并且需要更多的工程设计才能获得几乎没有优势的东西。
今天,我们看到了尝试以新的软件包格式(例如snap和flatpak)使用沙箱,并且浏览器也将其用于扩展。从一开始,Chromium就使用一种权限模型,而Firefox对所有web扩展都使用一种权限模型(因为只有57种可以安装的扩展)。这是很合理的,因为人们安装了来自未知作者的浏览器扩展程序,就像安装从未听说过的人的应用程序一样,认为它们没有比他们访问的网站更危险,这在没有沙箱保护他们的情况下是一种致命的误解。
Android使用“市场”安全模型:不同的应用程序来自不同的(半受信任的)供应商,并且应与受保护的资源相互隔离。大多数应用都是以营利为目的分发的:它们是通过出售(付费软件),显示付费广告或通过将其数据出售给第三方来“使用户盈利”的。即使发现非法数据,也极有可能进行非法数据访问。
Debian,Red Hat和类似的“经典” Linux发行版中的大多数应用程序都以源代码形式分发:在开源应用程序获得足够的吸引力之后,分发维护人员会手动选择将其包含在内。没有执行非法数据访问的动力,-潜在的收益不足以证明需要付出努力。
值得注意的是,Android的高级安全模型是其获得如此高的吸引力,轻松克服移动市场上的iOS的原因之一。现代台式机Linux发行版不仅“不同”,实际上在安全性和分发模型方面也远远落后于时代。
一些Linux发行版正在对其软件发行系统进行改进:集中式第三方软件存储库(AUR),用于分发第三方软件的专用软件包格式(AppImage,Snappy,Flatpack),辅助存储库系统(Docker)。不幸的是,这些改进几乎没有时间吸引:AppImage于2004年发明,AUR的第一个版本于2005年发布,但是10多年来,没有一个现代Linux发行版正式采用它们的功能。
当我在Linux上安装GIMP或LibreOffice之类的程序时,我从未被询问过权限。
这些应用程序安装在文件系统的特权部分中,您和大多数用户通常无权进行更改。
在为桌面使用而设置的主流发行版上,安装时最初设置的单个用户通常具有管理员权限。通常要求他们提供的只是安装软件的登录密码,而并非总是如此。
安装后,默认情况下,该软件将设置为普通用户可执行,并允许读取数据文件。这就是所需要的。
通过在Ubuntu上安装程序,我是否明确授予该程序对驱动器上任何位置的读/写权限以及对Internet的完全访问权限?
不是程序。发生的情况是该用户帐户属于不同的组,并且不同的组授予对不同资源的访问权限。
Linux上的安全模型是您的用户帐户具有特定的权限,而您帐户所属的组具有特定的权限。要访问文件系统的任何部分,都需要root特权,该特权通常不授予用户。即使使用sudo,您也不会获得所有权利。
普通用户帐户通常可以访问期望的资源,例如Internet。
从理论上讲,GIMP可以读取或删除驱动器上的任何目录,而不需要sudo类型的密码吗?
您作为用户拥有访问权限的任何目录或文件都可以由您启动的应用程序访问,因为它通常会继承您的权限。默认情况下,通常登录的用户通常无权更改大多数关键系统文件或共享文件。
我只是好奇这在技术上是否可行,而不是在可能与否之间。当然,我知道这不太可能。
请记住,大多数用户通常从受严格监管的存储库中安装应用程序,并且恶意代码的风险较低。
我可能会建议您多读一些书,以了解Linux权限。
Android的安全模型是不断发展的,以匹配谁不但不一般都懂的操作系统的底层安全模型什么,但很难理解用户的需求,任何关于计算机。
Linux模型(坦率地说,我更喜欢它)旨在允许用户(尤其是管理员)对系统的安全性进行更多控制(在允许的权限范围内)。
我认为从用户的角度来看,最好将其描述为全自动和半自动或手动控制之间的区别。现代消费者想要全自动。Linux具有半自动和手动功能。如今,大多数Linux用户不再需要了解安全模型,但是如果您需要或需要它,则可以使用该控件。
当您安装某些程序时,您可以将它们安装在自己的用户空间(即,包含在主目录中)内,而不是系统范围内。这样一来,就不会要求您提供超级用户特权,因为您不需要超级用户特权来安装供一个用户自己使用的程序。正是如此安装的程序确实会不能够访问文件不授予的“非所有者非小组成员可以阅读这个”不存在一个权限提升权限。