在 Linux 下使用 unshare 和 pivot_root 搭建一个有限的沙盒应用

Unshare 和 Pivot_root 创建沙箱环境。
目标:桌面应用程序的有限隔离。
主要步骤: 1 . 创建自定义脚本来创建操作系统容器镜像。
2 . 使用特定 UID/GID 运行应用程序。
3 . 隔离/proc。
4 . 将程序文件目录设置为只读。
5 . 使用户目录可写。
6 . 隔离不同应用程序的用户目录。
方法:
取消共享创建一个新的命名空间。

pivot_root 切换 rootfs。
优点:
nsenter 的更有效替代方案。

使用克隆系统调用避免 EPERM 错误。

与 Chroot 类似,但没有其限制。
限制:
系统调用过滤不充分。

没有 cgroup 支持。

不支持 SELinux/AppArmor。

无IPC和网络隔离。

不支持多用户切换。
结论: 提供适合桌面应用程序的有限沙箱环境。

一篇文章读懂linux的零拷贝技术

你好,上次有朋友问我零版本的事,我就告诉他了。
简单来说,当计算机传输数据时,它应该尽量减少 CPU 的占用,这样就不必逐字节传输。

就像搬东西时,必须一件一件地捡起来,一件件地放在一边。
太累了。
零和版本类似于传送带的发明。
事物从一端移动到另一端,CPU 无需执行任何操作。

例如,如果您在电脑上观看视频,传统方法需要中央处理器(CPU)首先将数据从硬盘复制到内存,然后复制到显卡,最后由显卡处理显示。
在此过程中,CPU肯定会忙碌数次。
至于零拷贝,则是直接从硬盘到显卡,在CPU上几乎不用担心。

在Linux系统上,有几种方法可以实现零版本。
例如,mmap可以将硬盘上的数据直接映射到内存,从而省去中间的复制步骤。
还有sendfile,直接从内核空间拷贝数据到网络设备,这样也减少了拷贝次数。

这项技术有很多好处。
例如,它可以使网络传输更快、系统响应更快、节能等。
因此,零拷贝现在在计算机中非常普遍,只是网络应用和大数据处理的产物。

不过,现在很多电脑和服务器都在使用零版本,而且效果还是相当明显的。
我仍然想知道这项技术未来是否会提升到一个新的水平,使我们的计算机更智能、更高效。