【linux】 unshare -user -r /bin/bash命令详解

命令解析

unshare -user -r /bin/bash 是一个 Linux 命令,它用于在新的用户命名空间中运行一个进程(在这个例子中是 /bin/bash)。以下是这个命令的详细解释:

【1. 命令解析】

  • unshare:

    • unshare 是一个工具,用于从调用进程中分离某些资源的命名空间(namespace)。
    • 它允许创建新的命名空间并在其中运行进程。
  • -user:

    • 创建一个新的用户命名空间。
    • 用户命名空间允许非特权用户映射当前用户自己的用户和组 ID
    • 在新命名空间中,当前用户可以表现为 root,即 UID 为 0。
  • -r:

    • 自动将当前用户映射为新用户命名空间的 root 用户。
    • 在新命名空间中,用户实际上是普通用户,但可以以 root 的身份运行。

    注意:不能单独存在,依赖前面的--user参数

  • /bin/bash:

    命令运行一个新的 Bash shell,使其在创建的用户命名空间中运行。

【2. 效果】

运行 unshare -user -r /bin/bash 后:

  • 用户命名空间创建:

    • 系统会创建一个新的用户命名空间。
    • 在此命名空间中,当前用户的 UID 会被映射为 0(root)。
    • 但命名空间的 root 并不是真正的全局 root,权限仅限于命名空间内部
  • 获得伪 root 权限:

    • 在新命名空间中,用户看起来是 root(UID=0)。
    • 但实际上,它与真实的全局 root 不同,限制在新命名空间的范围内。
  • 独立环境:

    对命名空间内部的修改(如文件系统、权限等)不会影响全局系统。

unshare -user -r /bin/bash 中,如果 -r 删除, 会是什么效果 ?

会创建一个新的user namespace,但是没鸟用,等于是一个空的壳子。linux下 ,资源必须有父子关系,才能进行管理。

此时要么不用这个新的资源,要么再手动给资源添加父子关系。

unshare -user -r /bin/bash 中,如果 -user 删除, 会是什么效果

unshare -r /bin/bash 能执行吗?

这种情况下,不会创建用户命名空间,而仅执行 -r 标志的作用,但其行为依赖于是否指定了其他命名空间类型(例如 --mount、--net 等)。以下是具体分析:

-r 标志的作用:

  • 如果存在用户命名空间(--user),-r 会将当前用户映射为命名空间内的 root。
  • 如果没有用户命名空间,-r 是无意义的,或者可能会报错,因为没有地方可以映射 UID

注意:此命令unshare -r /bin/bash 扔能执行,可能有默认值,例如指定了 --user--pid

相关推荐
dessler33 分钟前
Kubernetes(k8s)-集群监控(Prometheus)
linux·运维·kubernetes
一夜沐白34 分钟前
Linux用户管理
linux·运维·服务器·笔记
PLUS_WAVE1 小时前
【Tools】chezmoi 跨多台不同的机器管理 dotfiles 的工具
linux·服务器·软件工程·工具·chezmoi
唐青枫2 小时前
Linux man 命令使用教程
linux
珹洺3 小时前
Linux红帽:RHCSA认证知识讲解(十 四)分区管理、交换分区,创建逻辑卷与调整逻辑卷的大小
linux·运维·服务器
威桑3 小时前
解决Ubuntu下使用CLion构建Qt项目时找不到已安装的模块的问题
linux·运维·ubuntu
PLUS_WAVE4 小时前
【SSH 端口转发】通过SSH端口转发实现访问远程服务器的 tensorboard
linux·服务器·ssh·软件工程·端口转发·tensorboard
珹洺5 小时前
Linux操作系统从入门到实战(四)Linux基础指令(下)
linux·运维·服务器
程序猿(雷霆之王)12 小时前
Linux——进程间通信
linux·运维·服务器
riveting13 小时前
SD2351核心板:重构AI视觉产业价值链的“超级节点”
大数据·linux·图像处理·人工智能·重构·智能硬件