unshare

隔离远程桌面程序中的子进程
unshare

隔离远程桌面程序中的子进程

我正在为 Linux 开发一个远程桌面/流媒体程序。当用户登录时,他们指定要启动的程序,远程服务器会将该程序作为新进程启动。服务器进程充当 Wayland 合成器,因此子进程在屏幕外运行(从服务器上任何其他用户的角度来看),并从合成器获取输入。 这对于简单的应用程序来说效果很好,但是许多桌面应用程序,如 Steam(对于这个用例来说是一个重要的应用程序)使用(我认为)dbus 来检查是否有现有的 steam 实例正在运行,如果有,它们就会切换到它。因此,如果已经打开了一个窗口,那么简单地分叉/执行该进程是行不通的。 我尝试unshare(2)为每个孩子创建一...

Admin

为什么使用 chroot 取消共享不会像 /proc 那样隔离 /dev?
unshare

为什么使用 chroot 取消共享不会像 /proc 那样隔离 /dev?

我正在关注Kevin Boone 从头开始​​的容器 我在 /mnt/container/ 下有 alpine 迷你根文件系统 我对挂载如何与 chroot 和 unshare 一起工作有点困惑。 如果我们取消分享,则无需取消分享 chroot /mnt/container /bin/sh -l 我们在主机上得到一个带有“/”(根)的容器(某种)/mnt/container。 如果我们运行以下命令,则在容器内; mount -t proc proc /proc >& /dev/null mount -t devtmpfs dev /dev/ ...

Admin

当使用 --fork 为 `nsenter -t 时,如何获取 `unshare` 的子 pid`?
unshare

当使用 --fork 为 `nsenter -t 时,如何获取 `unshare` 的子 pid`?

使用 时unshare --pid --fork,该nsenter命令必须附加到子 pid 而不是unsharepid 以获取正确的 pid 命名空间。 我可以按如下方式获取 unshare 的 pid: unshare --pid --mount --fork --mount-proc bash & echo PID: $! fg 但我需要unshare孩子的 pid (2914003) 才能输入正确的命名空间: ps wwfuax | grep -A1 unshare 2914002 pts/4 S 0:00 | ...

Admin

1号航站楼:
unshare

1号航站楼:

unshare从我在和手册页中阅读的所有内容来看nsenter,我应该能够将目录绑定安装到其本身(mount --make-private目录),然后使用该目录中的文件来保存持久名称空间的引用。这就是我正在做的,基本上与 相同,man unshare但具有不同的目录,并且--pid=file除了--mount=file 1号航站楼: # mkdir -p /mnt/jails/debian/bookworm/.ns # mount --bind /mnt/jails/debian/bookworm/.ns /mnt/jails/debian/bookworm...

Admin

如果端口没有特权,为什么我在命名空间中是 root 时无法访问它们?
unshare

如果端口没有特权,为什么我在命名空间中是 root 时无法访问它们?

我跑了sudo sysctl -w net.ipv4.ip_unprivileged_port_start=1。然而,sudo ip netns exec myvpn unshare -r python -m http.server -b 127.0.0.1 2不起作用。奇怪的是,这确实sudo ip netns exec myvpn unshare python -m http.server -b 127.0.0.1 2:为什么? 编辑: 但是,两者sudo ip netns exec myvpn sudo -u $USER unshare python ...

Admin

如何扩展 Linux 命名空间的 subuid 数量
unshare

如何扩展 Linux 命名空间的 subuid 数量

运行类似这样的操作后: $ unshare -rUm $ mkdir opt $ mount --bind opt /opt $ touch /opt/test $ chown 1000:1000 /opt/test 我收到这个: chown: changing ownership of '/opt/test': Invalid argument 正如我所看到的,我只有 1 个可以使用的 subuid。 $ cat /proc/self/uid_map 0 1000 1 我怎样才能添加更多呢? 我的 su...

Admin

复制步骤
unshare

复制步骤

我正在尝试手动设置“无根”容器,只需unshare安装overlayfs.目前,我可以解压 rootfs tarball、设置/tmp 并/proc挂载以及将 hub_root/chroot 放入其中,不会出现任何问题。我还可以添加 adduser和su作为新用户。 但是,当我设置挂载时overlayfs,下层是解压的 tarball,上层是临时目录,当我su作为新用户时,重复上述步骤会失败,并出现权限被拒绝的问题。我怀疑这与新创建的用户没有adduser从覆盖文件系统读取的权限有关,但我不确定。demsg即使设置/proc/sys/kernel/print...

Admin

echo 到 gid_map 失败但 uid_map 成功
unshare

echo 到 gid_map 失败但 uid_map 成功

我试图通过写入 uid_map 和 gid_map 文件来映射新命名空间中的用户和组 ID。 很快1号航站楼我正在做 vaibhav@vaibhav:~$ unshare -U /bin/sh $ id uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup) $ echo $$ 2506 然后我打开新终端即2 号航站楼我做 vaibhav@vaibhav:~$ echo '0 1000 1' > /proc/2506/ uid_map vaibhav@vaibhav:~$ echo '0 ...

Admin

解决方案
unshare

解决方案

我有一个在网络命名空间中运行的应用程序。这效果很好。 我想在不同的命名空间中多次运行该应用程序。为了方便起见,我想将应用程序的工作目录绑定到命名空间内的 /tmp/nsX 之类的目录。 如果我只是mount --bind /tmp/nsX /var/lib/my-app在命名空间中执行此操作,那么当我退出命名空间时,挂载就会消失。 通过进入/退出命名空间,我的意思是ip netns exec bash 我正在看unshare,nsenter但我不知道该怎么做。 我想要: 为命名空间配置网络 在命名空间中为我的应用程序的工作目录创建绑定安装。 在命名空间中生...

Admin

使用 --mount-proc 取消共享会创建一个新的 mnt 命名空间
unshare

使用 --mount-proc 取消共享会创建一个新的 mnt 命名空间

我对与命令--mount-proc一起使用时的作用有点困惑。unshare 当我使用 时unshare -fp --mount-proc bash,我注意到它会产生一个新的 PID 命名空间和一个新的 MNT 命名空间。 鉴于我位于新的 MNT 命名空间中,我尝试卸载其中一个循环设备,并注意到这并未反映在父 MNT 中(当我df -h在父命名空间中运行时,挂载仍然显示)。 现在,我向前迈出了一步,在新的 MNT 命名空间中使用 创建了一个新的根pivot_root,并卸载了原始根。正如预期的那样,新的命名空间现在具有不同的根。父命名空间仍然具有原始根目录。 ...

Admin

从取消共享中获取不同的 PID
unshare

从取消共享中获取不同的 PID

以下是名为 的脚本中的一些基本代码test.sh。 bash -c "sleep 10; echo \$(pidof unshare)" & sudo unshare --mount --uts --ipc --net --pid --fork /bin/sh -c " ... do stuff ... sleep 60 " & PID=$! 当我执行脚本时,第一行后台bash命令识别的进程ID和分配给PID的值是不同的。此外,如果您ps在脚本中运行 a,我看不到任何一个进程 ID。我猜我错误地传递了取消共享的代码,以使其全部在后台作为...

Admin

取消与补充组的共享
unshare

取消与补充组的共享

在我的 Linux 机器上,我(我的用户)有一个主组和多个其他组(注意我属于组 150): $ id -u; id -g; id -G 1000 1000 1000 6 21 91 97 150 190 465 996 1003 我需要将命令隔离到用户命名空间中。我用unshare --user它: $ unshare --user --map-user=4000 --map-group=4000 bash -c 'id -u; id -g; id -G' 4000 4000 4000 65534 (请注意,我所属的所有组都被保留,但由于其中大多数组未映...

Admin

为什么新 PID 命名空间中的 PID 不连续
unshare

为什么新 PID 命名空间中的 PID 不连续

我运行的是 Ubuntu 20.04。根据https://lwn.net/Articles/531419/和https://stackoverflow.com/questions/3446727/how-does-linux-define-the-next-pid/3457108#3457108,分配的 PID 应该是连续的。然而,我新创建的 PID 命名空间的情况并非如此,其中第一个进程的 PID 为 1(理应如此),下一个进程的 PID 为 8。奇怪的是,PID 8 之后的每个 PID 都是按顺序分配的。 $ sudo unshare --fork --...

Admin