普通取消共享

普通取消共享

是否可以不使用 sudo 进入 chroot?如果可以,怎么做?我试过谷歌搜索,但得到的结果都是关于 crouton 的。

答案1

您可以查看施鲁特 安装 schroot软件包。它提供了一种授予用户访问系统上一个或多个 chroot 权限的方法。配置允许每个 chroot 仅由特定用户或组访问,并允许根据需要将主机系统中的目录绑定安装到每个 chroot 中。

配置完成后,没有 root 权限的普通用户也可以轻松运行

schroot -c chroot1 -- cmd ...

有关如何配置 schroot 的更多描述和示例,请阅读

答案2

目前,无需 root 权限即可使用以下unshare命令进行chroot挂载命名空间

普通取消共享

假设你想 chroot 到~/Projects/my-backup目录,并在其中运行~/Projects/my-backup/bin/bash二进制文件。因此你运行:

$ unshare -mr chroot ~/Projects/my-backup/ /bin/bash

这里:

  • -m意味着你可以mount --bind在新的 chroot 中使用(请注意,挂载对外界不可见,仅对你的 chroot 可见)
  • -r让它看起来像你是 chroot 中的 root
  • chroot …是常见的 chroot 命令。

可能的陷阱:

  1. 确保正确设置了环境变量。例如,从 Archlinux chroot 到 Ubuntu 时,我收到类似这样的错误bash: ls: command not found。结果发现,我的$PATH不包含/bin/ (在 Archlinux 上,它是 的符号链接/usr/bin/,所以我必须运行:

    PATH=$PATH:/bin/ unshare -mr chroot ~/Projects/my-backup/ /bin/bash
    
  2. 请注意,/proc/dev文件系统将不会被填充,因此运行需要它们的二进制文件将失败。有一个--mount-proc选项,但非 root 用户似乎无法访问它。

  3. chownnewuidmap除非您使用和newgidmap命令进行一些复杂的设置,否则它将无法工作。

Buildah 取消分享

与普通命令相比,它的优势unshare在于它负责chown命令开始工作所需的设置。您只需确保已为您的用户定义了/etc/subuid范围/etc/subgid

你按如下方式运行它:

$ buildah unshare chroot ~/Projects/my-backup/ /bin/bash

答案3

有很多方法可以做到这一点,有些比较简单,有些比较困难。有些比较安全,有些不太安全。而且,关于所有选项,还有各种意见。

在我看来,chroot 是最不安全的,维护起来也最麻烦。虽然有一些脚本和软件包可以减少维护工作量,但在我看来,它们仍然是最不安全的。chroot 没有真正的方法来管理资源分配。

接下来是 LXC,您可以使用图形工具管理 LXC,图形工具 (virt-manager) 和 Web 工具都存在。在我看来,LXC 的问题在于它发展迅速。尽管 LXC 比 chroot 更安全,分配资源也更容易,尽管这样做有点复杂,需要了解 cgroups。

我建议使用 openvz。openvz 的问题在于它不支持 Ubuntu 主机。但是,您可以使用 Fedora、CENTOS、RHEL 或 Proxmox。Proxmix 基于 Debian,因此与 Ubuntu 最相似。所有这些操作系统都有图形工具来管理客户机和分配资源。Proxmox 是基于 Web 的,一旦 Proxmox 项目认为 LXC 足够稳定,可用于“生产”环境,它就会过渡到 LXC。

您可以使用 XEN、vbox 或 kvm,但所有这些选项的开销都比 chroot/lxc/openzv 要高一些。管理起来更容易,因为它们都有图形工具,都是安全的,都允许资源分配。

在我看来,Proxmox 是最简单、最安全的选择。第二个选择是在 Ubuntu 上使用 virt-manager 的 LXC。

答案4

您可以为它们安装一个 lxc 容器,其中包含所有需要的程序,包括 shell、minecraft 服务器和 ssh-daemon 或完整的 linux 系统。

您必须以 root 身份启动带有 sshd 和 minecraft-server 的容器,但其用户将被限制为您的lxc.rootfs

如果您有足够的 IP 地址,您可以为每个 IP 地址分配一个,否则您可以在互斥端口上启动 sshd 和 minecraft 服务器。

相关内容