Android 或 iOS 等移动操作系统定义了一组权限(例如读取联系人/发送短信/访问摄像头等),用户需要专门授予应用程序才能让后者执行某些操作。
Linux 内核级上是否有类似的概念可用?例如,我可能想通过设置某些标志/指定一些元文件/为特定用户或组定义比读/写/执行更细粒度的规则,将程序限制为可用系统调用的子集,...以便以提高安全性。
如果我可以阻止程序进行 I/O 或访问网络之类的事情(我确信它不需要),那么在某些情况下我可能会更安全......
答案1
如果您想采用 Android 模型的方法,您可以在沙箱中运行应用程序。或者,除此之外,您还可以使用chroot
、SELinux
、DAC
(自主访问控制);或者,也许使用单独的非特权用户来进一步隔离特定项目,这使得在不影响其他用户和/或系统的情况下更容易实施限制;组也是如此:创建一个具有特定权限的组并将用户添加到该组。
https://developer.android.com/guide/topics/permissions/requesting.html
android的方法是在沙箱内运行应用程序,并允许应用程序执行某些功能外部那个沙箱。这与“在内核级别”限制进程操作的想法之间有明显的区别。
到目前为止,这个答案并不是可用于此类场景的工具或用例的完整列表。例如,使用防火墙是限制入站和出站网络访问的另一种明显方法;sysctl
例如,内核本身有许多可以启用/禁用的项目,具体取决于内核的构建方式或通过工具。然而,在大多数情况下,这会影响整个系统,而不仅仅是一个应用程序。
如果您担心某个应用程序可能不安全,请不要运行它。或者,您可以在虚拟机中运行它,或者在某种程度上作为 Docker 容器运行。然而,后者应该仔细配置。
最后,从源代码中检查应用程序的功能,或者从已经这样做过的人那里查找有关它的信息。最终,您应该知道您安装的内容并尝试坚持使用 Linux 发行版的官方存储库。