我想知道Linux/Unix是否有相当于Android中的权限系统的东西
在 Android 中,应用程序需要请求一些权限,用户在安装新应用程序时会看到这些权限并需要批准(例如,相机和访问网络的权限)
答案1
免责声明:不是 Android 开发人员!
你无法真正比较这样的系统。尽管 Android 使用 Linux 内核,但该操作系统的工作方式与“普通”GNU/Linux 发行版不同。
Android 中的应用程序运行在沙箱环境,在该环境之外没有任何权利。这就是为什么应用程序在安装时必须请求访问 Android 系统其他部分的权限。
“普通”GNU/Linux 发行版不会那样工作。当您安装常用程序(例如 GIMP)时,它会运行不是在沙盒环境中。因此,您不必授予 GIMP 访问权限即可访问您的文件。
当“正常”发行版中的某些程序想要执行需要提升 ( root
) 权限的操作(例如包管理器)时,您必须通过输入密码授予该程序访问权限以执行该特定任务root
。但对于“正常”程序来说,这是没有必要的。
我希望以上内容至少能让事情变得更清楚一些!也许对 Android 有更深入了解的人会来写一个更全面的答案。
这里@Stephen Kitt 关于 GNU/Linux 权限的一个很好的回答。
这里是有关 Android 中权限如何工作的链接。
答案2
你正在寻找的东西叫做强制访问控制,或MAC。 Android 默认启用它,并且它紧密集成到用户层 API 中,但 Android 中 MAC 基础的技术(即 SELinux)是默认 Linux 内核的一部分。此外,还有另一个名为 AppArmor 的 MAC 框架,android 不使用该框架,但具有类似的功能。
配置 SELinux 或 AppArmor 不适合胆小的人。但是,许多发行版附带了您可以使用的默认 SELinux 和/或 AppArmor 策略。例如,Ubuntu 附带默认启用的 AppArmor,而 RHEL/CentOS 附带一些可供您选择的 SELinux 规则集,其中默认启用限制最少的规则集。 Debian 也有一个附带的 SELinux 规则集,但默认情况下并未启用,并且在启用 SELinux 的情况下也没有经过很好的测试。
大多数启用 MAC 的发行版都没有非常严格的规则集;毕竟,如果它妨碍太多,人们就会禁用它,然后你就无法获得好处。然而,当然可以启用一组更具限制性的规则——这只是意味着您可能需要更多地调试,因为 Linux 桌面上的大多数应用程序都是不是在启用 MAC 的情况下进行测试。
某些 SELinux 规则集的功能之一是“SELinux 沙箱”。如果您使用它,在其中运行的应用程序将具有很少的权限。这对于测试应用程序很有用,而不会带来行为不当和占用文件的风险。有关更多信息,您可以阅读https://www.linux.com/learn/run-applications-secure-sandboxes-selinux。