Jak*_*ake 5 security files application
我正在运行 Ubuntu Linux 机器。当我运行 Chrome 和 Firefox 等不同供应商编写的应用程序时,我注意到它们都使用我的 uid 运行。但如果是这样,他们在文件系统上创建的任何文件也将具有相同的 uid。那么在 linux 中,两个互不信任的应用程序如何使它们的文件彼此安全?
Gil*_*il' 14
字面上的答案是,在您的帐户下不存在不受信任的应用程序。如果要运行不受信任的应用程序,请在不同的帐户下或在虚拟机中运行它。
Unix、Windows等典型的桌面操作系统和Android、iOS等典型的移动操作系统具有不同的安全模型。Unix 是一个多用户操作系统,用户互不信任。应用程序被认为是可信的:用户的所有应用程序都运行在相同的安全上下文中。另一方面,服务不太可信:它们通常在专用帐户下执行,以减少出现安全漏洞时的影响。
Unix 安全模型以这种方式工作有两个主要原因:
尽管现在的应用程序作者比 40 年前多得多,但应用程序通常仍然通过可信渠道分发,这些渠道带有信誉指示。(这对 Linux 来说明显比在 Windows 上更真实,这也是病毒在 Windows 下更常见的部分原因。)发现具有后门的应用程序会立即从 Linux 软件存储库中提取。
移动操作系统的设计考虑了不同的威胁。它们是为单用户系统设计的,但应用程序来自完全不受信任的来源。
应用程序隔离开始进入桌面 Unix 系统。某些发行版在安全框架(例如AppArmor或SELinux)下运行某些程序,这些框架限制了应用程序的功能。这些安全限制的代价是它们有时使理想的用途变得不可能,例如阻止受限制的应用程序打开某些目录中的文件。
加密将完全无用。加密只保护传输中(通过网络)或静止(存储在磁盘上)的数据,它不保护实时系统上的数据——如果子系统 A 解密了它的数据,那么由操作系统来阻止子系统 B 阻止访问解密的数据,因此数据是由 A 解密还是未加密存储都无关紧要。操作系统可能会加密数据,但只是为了在存储介质被盗时保护它。
如果你想运行你不信任的代码,最好的办法是在虚拟机中运行它。仅授予虚拟机访问应用程序需要的文件的权限(例如,不要共享您的主目录)。
另请参阅为什么移动应用程序具有细粒度权限而桌面应用程序没有?而为什么是移动设备的应用程序比桌面更严格?