Linux 安全模块:守护进程和套接字

Linux 安全模块:守护进程和套接字,第1张

容器化已成为无条件的行业标准,使我们的应用程序更易于配置和部署。Docker作为最流行的软件,尽管有podman等选项,却成为容器的代名词。但是如果你想在另一个容器中启动一个容器呢?是不是一个很好的选择,如果你根本没有其他方法怎么办?

在本文中,我将介绍我们在本地处理会话的方式。运行这样的会话使开发比在生产中通过计算API更简单。我们可以监控工作人员创建的进程和文件,而无需通过SSH连接到云。此外,使用“tail-f /dev/null”运行容器允许我们更仔细地查看stdout和stderr,而无需检查日志,从而进一步改进调试方式。此外,我们还获得了一些IDE的杀手级功能,例如PyCharm容器调试器。但它的公式可以用一句话来描述。

我们将docker安装在带有主Web应用程序的容器中,并为其提供对域套接字的访问权限,该域套接字默认由docker守护程序侦听。由带有已安装套接字的dockercli 运行:

Linux 安全模块:守护进程和套接字,435ea5a6-24e0-11ed-ba43-dac502259ad0.png,第2张

在 docker-compose.yaml中:

Linux 安全模块:守护进程和套接字,437cbfbe-24e0-11ed-ba43-dac502259ad0.png,第3张

让我们更深入地了解一下这个公式守护进程和套接字的组成部分。

让我们从守护进程开始。这个名字是怎么来的?

在 Unix SystemAdministraTIon Handbook 中,EviNemeth 对守护进程进行了如下说明:

许多人将“daemon”这个词等同于“demon”这个词,暗示着UNIX和黑社会之间存在某种邪恶的联系。这是一个严重的误解。“恶魔”实际上是“恶魔”的一种更古老的形式。守护进程对善恶没有特别的偏见,而是用来帮助定义一个人的性格或个性。古希腊人对“个人守护神”的概念就像现代的“守护天使”概念——eudaemonia是一种被善良的精神帮助或保护的状态。通常,UNIX系统似乎同时充满了守护进程和恶魔。

守护进程通常是在后台观察 *** 作以等待状态、服务于特定子系统并确定整个系统的 *** 作规则的实用程序。例如,一个守护进程被配置为监控打印服务的状态;网络守护进程管理网络连接并监控它们的状态,或者docker 守护进程在您的 *** 作系统上 *** 作容器和图像。顺便说一句,展望未来,dockerd设计是在容器内运行容器的问题。您可以使用终端中的pstree、top或 htop查看终端当前正在运行的守护进程。通常,他们的名字以“d”字母结尾。

 

Linux 安全模块:守护进程和套接字,43e8a5da-24e0-11ed-ba43-dac502259ad0.png,第4张

我们用来与 dockerd通信的域套接字呢?Unix域套接字,又名 UDS或 IPC套接字(进程间通信套接字),是用于在同一主机 *** 作系统中执行的进程之间交换数据的数据通信端点。它也被它的地址族AF_UNIX 引用。UNIX域中的有效套接字类型是:

SOCK_STREAM(与 TCP相比)——用于面向流的套接字。

SOCK_DGRAM(与 UDP相比)——用于保留消息边界的面向数据报的套接字(与大多数UNIX 实现一样,UNIX域数据报套接字始终可靠且不会重新排序数据报)。

SOCK_SEQPACKET(与 SCTP相比)——用于面向连接的顺序数据包套接字,保留消息边界并按发送顺序传递消息。

Unix 域套接字工具是POSIX *** 作系统的标准组件。

Unix 域套接字的 API类似于 Internet套接字的API,但不是使用底层网络协议,所有通信都完全发生在 *** 作系统内核中。Unix域套接字可以使用文件系统作为它们的地址命名空间。(一些 *** 作系统,如Linux,提供额外的命名空间)。进程将Unix 域套接字作为文件系统的阳极,因此两个进程可以通过打开同一个套接字进行通信。

现在让我们回到正题。如果您的云提供商拒绝以这种方式使用容器,您无法选择挂载对套接字的访问怎么办?所以你必须在另一个容器中运行它,但它伴随着这个选项的创建者Jérôme Petazzoni 描述的新问题,但它不是首选。如果你想找出路,你绝对应该看看他的帖子。不这样做的主要原因有两个:

1、它与Linux 安全模块(LSM)的配合不好;

2、它会在文件系统中造成不匹配,从而给在父容器中创建的容器带来问题。

总之,容器化为我们提供了一个绝佳的机会,可以统一所有Linux 系统中的所有进程,并使用挂载来执行更好的调试,以仔细查看输出和输入文件,例如描述测试管道的流或yaml。然而,有时它会给我们带来一些与主机上不同版本的docker 相关的问题,这对于在云中运行或容器在彼此内部运行的方式来说并不常见。

这篇文章并非如你所见。但我希望你喜欢这个小笔记,并从中学到新的东西!
编辑:黄飞

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/3000464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存