在Ubuntu Touch中,应用程序权限将如何处理?

大多数硬件元素或在Android和iOS平台上共享的数据集都受到严格控制,只有在需要知道的情况下才提供给应用程序。这可以确保用户能够确保恶意手电筒应用程序不会上传他们的位置和联系人列表。
在Ubuntu桌面上,实际上有两个权限级别的控制:用户和root。对于用户而言,没有太多限制。它仍然可以连接到互联网,与几乎任何喜欢的硬件进行交互,并读写位于/home/user/目录下的任何文件。这种模式假设用户足够能力确保他们使用的应用程序是合法的(这在开源软件中非常容易)。
所以我的问题是,移动平台上将有哪些对应用程序功能的限制和控制?由于操作系统相同,这种系统如何溢出到桌面?是否所有程序都需要被隔离?
我非常想知道计划是什么样的 :)

附注:我喜欢iOS相对于Android的一点是,许多权限在首次运行时必须由用户明确批准。结果是,如果你不想告诉Facebook应用你的位置,你可以直接禁止它,而在Android上,你只能卸载该应用并忘记它。

我希望看到的系统是在应用程序需要某个权限执行命令时,它会询问是否“仅此一次”或“始终”允许该权限。想要在地图上找到自己?请求位置权限。就像处理某些HTML5 API的方式一样。


3我喜欢你的问题。对我来说,安卓应用程序中有一些应用请求过多的权限,而且我甚至不明白这些应用需要这些权限做什么。考虑到系统的早期阶段,对这个问题还没有太多关注。但是在后期阶段,这个问题将变得更加重要。 - NilsB
2虽然我理论上喜欢你的问题,但在实际应用中,这意味着让设备上的“纯Linux on ARM”部分消失(在我看来,这是它最酷的优势)。也许 - 希望如此 - 他们会实现每个应用程序都是一个类似于现在服务的用户。 - RobotHumans
啊,@AbrahamVanHelpsing,你说得太对了。我不是专家,但我想如果每个程序都在自己的用户下运行,应该能解决文件访问的问题。不过硬件访问的问题还没有解决。纯ARM架构上的Linux很好,但总会有闭源软件存在,因此用户需要防止程序失控的需求仍然存在。移动设备领域存在更多恶意/入侵软件,因为这是一个易受攻击的平台,有很多无知的用户会安装它们。 - Jonah
1这并不真正意味着对硬件访问的任何事情。这是由类似于纯正常规Linux上的组来管理的。人们忘记了这一点,因为他们的用户神奇地成为音频组或用于USB串行设备的拨号组之类的一部分。无线访问?应用程序通过DBus发送签名请求,问题解决。Linux权限起作用。 - RobotHumans
@AbrahamVanHelpsing 所以每个硬件组件都有一个用户/组,用户必须在该组中才能使用它吗? - Jonah
1我不在开发团队,但音频设备需要用户加入相关组,tty设备等在原始的Ubuntu上也是如此。 - RobotHumans
1至少音频设备、调制解调器、无线局域网、以太网、图形处理器、中央处理器、内存、DVD、USB、读卡器、蓝牙、打印机、网络摄像头、ATA、SATA、eSATA、键盘、鼠标、触摸板和指纹识别器的访问可以根据组和/或用户进行限制。通过设备节点访问的每个设备都有自己的组/权限。如果应用程序使用套接字,只需设置组/权限即可。还有不同的方式(是的,您也有选择)来限制应用程序、服务等之间的通信(已经提到了D-Bus和其他类似RPC的服务)。甚至ls命令也可以受限。此框有长度限制... - Sampo Sarrala - codidact.org
1关于将Ubuntu Touch视为“纯粹的ARM上的Linux”的评论(#comment341244_270902) - 你知道吗?尽管我们中的一些人喜欢将移动设备视为“只是另一个计算设备”,但它个人和“随时随地”性质的事实必然需要与那些关心隐私/安全的人有所不同的处理方式...我赞同操作系统采取这种处理方式(在需要时请求权限,并提供“仅此一次”/“始终”选项)。我甚至会更进一步,但这个讨论将留待以后。 - Jeffrey 'jf' Lim
1个回答

这是作为 Ubuntu App Developer Upload 规范的一部分正在进行的工作,特别是关于安全性部分
目前仍处于早期阶段,但作为规范的一部分,并提供一些背景信息:

一旦安装了应用程序,AppArmor将提供一个安全沙盒,以保护用户免受恶意或简单损坏的代码。为了实现这一目标,每个应用程序都需要一个正确构建且权限最小化的配置文件,以限制其对本地系统的访问。

应用程序将通过 AppArmor 进行沙盒化,并根据应用的 AppArmor 安全配置文件授予权限。

我猜这意味着当它们被安装时,它们会获得权限吧? - Jonah