新一代通用的Linux软件包管理工具

> 请关注本头条号,每天坚持更新原创干货技术文章。> 如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习。

1. 前言

snap和flatpak都是新一代跨Linux发行版的软件包管理技术,这两种下一代打包方法在本质上拥有相同的目标和特点:即不依赖于第三方系统功能库的独立包装。上一篇我们简单介绍了flatpak的原理,今天我们接着简要介绍snap的安全机制。

2. 简介

snap是Canoncial公司提出的新一代linux包管理工具,致力于将所有linux发行版上的包格式统一,做到“一次打包,到处使用”。目前snap已经可以在包括Ubuntu、Fedora、Mint等多个Linux发行版上使用。首先我们来了解下snap相关的各种名词:

2.1 snap

新一代跨Linux发行版的软件包管理技术,支持各大主流Linux发行版,通过Linux内核安全机制保证用户数据安全,彻底解决包依赖关系相关问题,并大大简化应用软件的打包工序。snap同时为安装及管理snap包的命令行工具。

2.2 snapd

管理snap软件包的后台服务。

2.3 kernel snap

使用snap格式打包的内核,包含内核镜像及内核模块。

2.4 OS snap

使用snap格式重新打包的rootfs,包含了运行和管理snap的基本资源,当你第一次安装snap时,OS snap 首先被安装。

2.5 snapcraft

将软件打包成snap格式的打包工具集。

2.6 snappy

原指完全基于snap构建的系统,此名称已弃用,现统一称为Ubuntu Core,即Ubuntu的全snap操作系统,有别于传统基于deb包的classic Ubuntu。

3. 安全策略

snap应用以沙箱的方式运行。系统通过一些机制限制应用访问资源的权限来实现其安全特性,比如通过对内核安全机制AppArmor,Seccomp等的配置实现的沙箱和snap文件系统等。开发者不必过多了解系统安全机制的细节。下面简要说明snap使用的部分安全策略。

3.1 Sandbox

Linux Sandbox 是根据内核中支持的一些安全机制实现的进程访问控制方式。通常通过为进程分配随机uid,将进程置于chroot环境和为进程uid配置Capability等方式将进程置于严格受限的一种状态下。snap应用使用这种方式运行在系统为其分配的沙箱环境中。

3.2 security policy ID

每一个snap应用程序命令都有唯一的security policy ID,系统将此ID与命令绑定,由此可以为同一snap包内的不同程序配置不同的安全策略。作为系统识别命令的标示,当程序安装和运行时,系统会根据其Security Policy ID为其分配资源。在沙箱中运行的snap应用之间的通信控制也通过此ID来进行配置。

snap应用的security policy ID的命名规则为snap.name.command

例如,hello程序的security policy ID即为snap.hello.hello

3.3 snap文件系统

snap文件系统被划分为具有只读和读写两种不同权限的区域,每个snap应用有其独有的受限文件目录,如下图所示:

新一代通用的Linux软件包管理工具

snap文件系统

由此可见,一个snap应用具有写权限的目录是极其有限的,并且每个snap应用都有其独立的可写目录。snap文件系统对snap应用相关目录的权限配置说明,这种方式实现了应用与应用,应用与系统之间的隔离。

同时这种方式对snap应用的升级和回滚提供了很好的支持,升级时只需将确定版本的相关目录复制到更高版本的对应目录,而回退只需删除更高版本的目录。

3.4 AppArmor

AppArmor是一个强制访问控制系统,在内核层面对进程可访问的资源进行控制。 在snap应用程序安装时,系统会为其中的每一个命令生成其特有的AppArmor配置文件。内核对可执行程序的Capability限制也可以通过Aparmor来配置。当执行应用程序中的命令时,AppArmor机制可保证此命令不会越权访问。 作为一种内核中的安全机制,在ubuntu classic系统中也同时支持AppArmor提供的机制。但与classic系统不同,snap系统对程序的访问控制更加严格,基本做到“只满足程序执行所需的最小权限”。

3.5 Seccomp

Seccomp是一个内核接口访问过滤器,snap应用程序通过其独有的过滤器访问内核接口。在snap应用程序启动之前会自动配置过滤器。Seccomp在snap系统中的作用类似于AppArmor。都是控制应用程序对系统资源的访问。

同步于:

https://linux.cn/blog-48599-6380.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年12月6日 上午8:46
下一篇 2022年12月6日 上午8:48

相关推荐