标签: chroot

在 chroot 环境中挂载 dev、proc、sys?

我正在尝试使用自定义选择的包创建 Linux 映像。
我想要做的是手工制作我将在 XO 笔记本电脑上使用的包,因为在真正的 XO 硬件上编译包需要很长时间,如果我可以构建我需要的所有包并且只刷图像到XO,我可以节省时间和空间。

当我尝试安装某些软件包时,由于缺少 proc、sys、dev 目录而无法配置。所以,我从其他地方了解到我需要将主机 proc、... 目录“挂载”到我的 chroot 环境中。

我看到了两种语法,但不确定使用哪一种。

在主机中:

  mount --bind /proc <chroot dir>/proc 
Run Code Online (Sandbox Code Playgroud)

和另一种语法(在 chroot 环境中):

  mount -t proc none /proc
Run Code Online (Sandbox Code Playgroud)

我应该使用哪一种,有什么区别?

linux debian chroot

108
推荐指数
3
解决办法
27万
查看次数

准备 chroot 以恢复损坏的 Linux 安装的正确方法是什么?

这个问题与经常被问到的问题有关。该程序经常被提及或链接到异地,但通常没有清楚和正确地说明。为了将有用的信息集中在一个地方,这个问题旨在为这个程序提供一个清晰、正确的参考。


为恢复过程准备chroot环境的正确步骤是什么?

许多 情况下,最好在安装中修复损坏的 Linux 安装。但是如果系统无法启动,您如何从内部修复它?

让我们假设您设法引导到备用系统。到达那里后,您需要访问损坏的安装以修复它。许多恢复 入门指南推荐使用的chroot才能,如果你是真正引导到碎安装运行程序。

  • 基本程序是什么?
  • 是否有公认的最佳实践可以遵循?
  • 为了使基本准备步骤适应特定的恢复任务,需要考虑哪些变量?

由于这是社区 Wiki,请随时编辑此问题以对其进行改进。

livecd chroot system-recovery community-faq-proposed

62
推荐指数
1
解决办法
13万
查看次数

从非基于 systemd 的 rootfs 启动 chroot 内的 systemd 服务

使用 init 脚本(或使用 openrc)我总是可以从不同的安装根运行服务。
但是当我跑步时,chroot /somepath/to_root /usr/bin/systemctl start someservice我得到了:

Running in chroot, ignoring request.
Run Code Online (Sandbox Code Playgroud)

有没有办法强制systemd运行服务?

更新:
我忘了说我的主机系统运行 init 脚本或 openrc,但从来没有使用 systemd,而且我使用 chroot 来对 Unix 系统进行故障排除,这些系统甚至无法启动最小的 shell。

unix chroot systemd sysvinit openrc

52
推荐指数
3
解决办法
9万
查看次数

对 /var/www 具有写入权限的 chrooted sftp 用户

我对我尝试部署的这个设置感到困惑。我希望你们当中有人能帮我一把:非常感谢。

背景资料

服务器是Debian 6.0,ext3,前面是Apache2/SSL和Nginx作为反向代理。我需要提供对 Apache 根目录 (/var/www) 的 sftp 访问权限,确保 sftp 用户以 RWX 权限被 chroot 到该路径。

所有这一切都没有修改 /var/www 中的任何默认权限。

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www
Run Code Online (Sandbox Code Playgroud)

里面 /var/www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 …
Run Code Online (Sandbox Code Playgroud)

debian apache-http-server sftp chroot file-permissions

12
推荐指数
1
解决办法
2万
查看次数

如何在普通 chroot 中启动 Xorg-server?

当我运行时,chroot /somepath /usr/bin/startx我得到了一些看起来像 evdev 问题的东西...... (我正确地 --bind 安装了 /dev/ /dev/pts /dev/shm /proc /sys /tmp )

屏幕显示和程序正常运行,除了我没有鼠标和键盘,我无法切换到本地终端,迫使我硬重启。

这是什么原因?
是否有任何解决方案可以让服务器运行?

重现的可能步骤(适用于所有发行版)

  • 将 Linux 发行版的根目录复制到您运行发行版的文件夹中。

  • 正确绑定挂载所有内容(/dev/pts /var/run /dev/shm /sys/kernel/debugfs...)

  • 使用chroot命令运行 shell 。

  • 确保没有任何 X11 服务器已经在运行,然后启动xinit /usr/bin/some X11 program

您现在可以硬重启您的计算机!(如果您没有设置任何远程访问)

x-server chroot

9
推荐指数
2
解决办法
2万
查看次数

如何在 chrooted 环境之外添加指向文件系统的指针 - 通过 OpenSSH 使用 chrooted SFTP

所以,我很确定这是真的,但我还没有找到直接回答我的问题的具体详细的独立参考。问题是:

如何添加对 chroot 环境之外的资源的访问权限?

我已经使用 OpenSSH 的新 ChrootDirectory 指令设置了 chroot SFTP。

不幸的是,在我的环境中,我无法将 chroot 直接限制到某些用户资源所在的主目录。所以我创建了一个单独的 chroot 区域,并且正在链接所需的资源。

我尝试使用符号链接来做到这一点。例如

ln -s /path/to/resource /chroot/dir/resource
Run Code Online (Sandbox Code Playgroud)

但这有一个“无法规范未找到的目录”错误

所以我的解决方案是使用绑定安装:

mount --bind /path/to/resource /chroot/dir/resource
Run Code Online (Sandbox Code Playgroud)

那奏效了。

真的,我只是想确认符号链接不起作用。指向描述此内容的良好参考的链接也很好。

openssh sftp chroot

8
推荐指数
1
解决办法
7525
查看次数

SFTP ChRoot 导致管道破裂

我有一个网站,我想添加一些对子文件夹的限制访问。为此,我决定将 CHROOT 与 SFTP 一起使用(我主要遵循此链接:http : //shapeshed.com/chroot_sftp_users_on_ubuntu_intrepid/

现在,我已经创建了一个用户 (sio2104) 和一个组 (magento)。按照指南操作后,我的文件夹列表如下所示:

-rw-r--r--  1 root root       27 2012-02-01 14:23 index.html
-rw-r--r--  1 root root       21 2012-02-01 14:24 info.php
drwx------ 15 root root     4096 2012-02-25 00:31 magento
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已经 chown root:root 文件夹 magento 我想监禁在用户和......顺便说一句。同样在 magento 文件夹中,我 chown sio2104:magento 一切,以便他们可以访问他们想要的东西。最后,我已将此添加到 sshd_config 文件中:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Match Group magento
        ChrootDirectory /usr/share/nginx/www/magento
        ForceCommand internal-sftp
        AllowTCPForwarding no
        X11Forwarding no
        PasswordAuthentication yes

#UsePAM yes
Run Code Online (Sandbox Code Playgroud)

结果是……好吧,我可以输入我的登录名、密码,然后一切都以“管道损坏”错误结束。

$ sftp sio2104@10.20.0.50
[....some debug....]
sio2104@10.20.0.50's password: 
debug1: …
Run Code Online (Sandbox Code Playgroud)

linux openssh sftp chroot ubuntu

8
推荐指数
2
解决办法
3万
查看次数

rsync 错误:符号链接没有参照物

我正在尝试配置 rsnapshot(使用 rsync)来备份 Windows 服务器,但是我遇到了 rsync 无法跟踪要备份的服务器上的符号链接的问题。

设置:

  • 安装了 Cygwin 的 Windows Server 2008 R2 保存要备份的文件
  • 同一网络上的 ArchLinux 服务器应该从 Windows 服务器备份文件
  • Windows 服务器已安装 sshd 并正常运行
  • Windows 服务器没有正在运行的 rsync 守护进程(据我所知),但我可以通过 ssh 使用 rsync 从 Linux 服务器连接到 Windows 服务器并复制文件。
  • 由于应用程序使某些要备份的文件始终处于打开状态,因此 Windows 服务器被配置为创建包含要备份数据的驱动器的卷影副本
  • 我使用以下脚本创建指向最新卷影副本卷的链接,以便 rsync 可以访问它:

    #!/bin/sh
    # Mount the latest shadow copy for the specified volume
    
    VOLUME="D:"
    LINK_NAME="E:\\latest-data-shadow-copy"
    
    
    SHADOW_VOLUME=`vssadmin list shadows /for=$VOLUME | grep "Shadow Copy Volume:" | tail -1 | tr -s ' ' | cut -d ' ' -f5`
    SHADOW_VOLUME+="\\" …
    Run Code Online (Sandbox Code Playgroud)

backup cygwin rsync chroot rsnapshot

7
推荐指数
1
解决办法
6876
查看次数

使用 ptrace 时如何区分“syscall”和“int 80h”

据我所知,ptrace 只能通过 PTRACE_SYSCALL 获取系统调用号,但是 x86 和 x64 中的系统调用号是不同的。那么有没有办法找出这个系统调用的真正起源?

我现在正在编写一个程序来通过系统调用号限制其他一些系统调用,我知道 x86 和 x64 上的系统调用号,但是一些程序使用“int 80h”而不是“系统调用”,这样他们就可以做危险的事情我限制在 x64 上。例如,我在 x64 上禁止了 fork(),他们可以使用 'int 80h(2)'(fork()) 而我认为他们正在使用 'syscall(2)'(open()),因此他们可以打破限制. 尽管 ptrace 可以跟踪它们并获取系统调用号,但我无法区分系统调用实际来自何处。

linux sandbox kernel chroot

7
推荐指数
1
解决办法
807
查看次数

在 chroot 中反复修复“/dev/null: Permission denied”

我已经用 chroot 到一个外部磁盘sudo chroot /mnt/disk,但几乎我所做的一切(登录、tab 完成、less输入文件,...)都会导致一个错误提到/dev/null: Permission denied,即使命令似乎有效。

/dev/null 具有正确的权限 (666),并file表示它是一个字符设备,所以它不像任何东西已经用常规文件覆盖它或更改了权限。

我能做些什么来解决这个问题?

以下是制表符补全(of ls /u)的结果:

$ ls /ubash: /dev/null: Permission denied
bash: _upvars: `-a2': invalid number specifier
bash: /dev/null: Permission denied
bash: _upvars: `-a0': invalid number specifier
Run Code Online (Sandbox Code Playgroud)

linux permissions chroot

7
推荐指数
1
解决办法
5373
查看次数