Linux 可以分为内核层和用户层。用户层通过内核层提供的操作接口来执行各类任务。内核层提供的权限划分、进程隔离和内存保护的安全功能,是用户层的安全基础。
一旦内核安全被突破(比如黑客能够修改内核逻辑),黑客就可以任意地变更权限、操作进程和获取内存了。这个时候,任何用户层的安全措施都是没有意义的。既然 Linux 的内核安全这么重要,那我们是不是要在防护上付出大量的精力呢?
事实上,正如我们不需要在开发应用时(尤其是使用 Java 这类相对高层的语言时),过多地关心操作系统相关的内容一样,我们在考虑 Linux 安全时,也不需要过多地考虑内核的安全,更多的是要考虑用户层的安全。所以,对于 Linux 内核层的安全,我们只需要按照插件漏洞的防护方法,确保使用官方的镜像并保持更新就足够了。
既然,使用最多的是用户层,那我们就来看一下,用户层的操作都有什么。
在 Linux 中,用户层的所有操作,都可以抽象为“主体 -> 请求 -> 客体”这么一个流程。比如,“打开 /etc/passwd”这一操作的主体是实际的用户,请求是读,客体是 /etc/passwd 这个文件。
在这个过程中,Linux 内核安全提供了基于权限的访问控制,确保数据不被其他操作获取。
宇软分享Linux 的安全模型