第27节 unshare 和 newuidmap


❤️💕💕记录sealosopen in new window开源项目的学习过程。k8s,docker和云原生的学习open in new window。Myblog:http://nsddd.topopen in new window


[TOC]

对比

unshare 和 newuidmap 是 Linux 的系统调用,它们主要用于实现命名空间隔离。

  • unshare: unshare 允许进程在运行时创建和隔离新的命名空间。例如,可以使用 unshare 创建一个新的 PID 命名空间,从而使一个进程在新的命名空间中运行,并且与原来的命名空间隔离。

  • newuidmap: newuidmap 工具用于在容器中控制用户 ID 映射,这是实现容器的必要步骤。在容器中,需要在主机和容器间进行用户 ID 的映射,以便使容器中的进程具有访问文件系统的权限。

总体来说,unshare 可以创建命名空间隔离,而 newuidmap 则用于实现容器隔离中的用户 ID 映射。

实现 sealer 对 buildah 得调用,sealer 在 root less 模式下的正常挂载;buildah是如何启动rootless容器的。

about newuidmap

 newuidmap - 设置用户命名空间的 uid 映射

about unshare

create a new PID:

unshare -U bash

runuseer

runuser - 使用替代用户和组 ID 运行命令

 runuser [选项] -u用户[[--]命令[参数...]]
 runuser [选项] [ - ] [用户[参数...]]

命令runuser更改运行命令的用户。runuser类似于su命令open in new window,但略有不同。

只有root用户可以调用runuser。因此,它不会提示输入密码。这种行为非常适合脚本编写,在本文的后面部分,我们将研究如何将它与sudoopen in new window一起使用,以便为非特权用户提供对特定命令的访问权限。

[sealer@iZuf68xky083mr0yy6q37lZ ~]$ runuser 
runuser: may not be used by non-root users

权限管理

runusersudoopen in new window结合可以提供对用户权限的更精细控制。

接下来,让baeldungroot身份运行脚本。我们将使用sudo,但我们也可以使用suopen in new window。让我们通过使用visudo命令open in new window将此行添加到sudoers文件来添加权限:

baeldung ALL=(root) NOPASSWD: /home/baeldung/script.sh

关于 rootless 的配置问题

END 链接