我听说/阅读了很多关于 linux 下的 chroot jail 但从未使用过它(我每天都使用 Fedora),那么什么是 chroot “jail”?我何时以及为什么可以使用它/不使用它,还有什么我应该知道的吗?我将如何着手创建一个?
当我运行chroot
命令时出现错误:
failed to run command ‘/bin/bash’: No such file or directory
Run Code Online (Sandbox Code Playgroud) 我有一个 unix 安装,它应该可以用作 chroot 和独立系统。如果它作为 chroot 运行,我不想运行任何服务(cron、inetd 等),因为它们会与主机系统发生冲突或变得多余。
如何编写根据是否在 chroot 中运行而行为不同的 shell 脚本?我的迫切需要是一个现代 Linux 系统,它/proc
安装在 chroot 中,并且脚本以 root 身份运行,但也欢迎更多可移植的答案。(如果 /proc 未安装,请参阅如何判断我正在 chroot 中运行?对于没有/proc
.的 Linux 的情况。)
更一般地说,适用于其他收容方法的建议会很有趣。实际问题是,这个系统是否应该运行任何服务?(答案在 chroot 中是否定的,在成熟的虚拟机中是;我不知道诸如 jails 或容器之类的中间情况。)
所以我在 VPS - CentOS Linux 安装上。我在服务器上有 vsFTPd。我目前可以通过 root 用户对服务器进行 SFTP 访问,但现在我正在尝试创建一个新用户,该用户只能通过 FTP 访问服务器上的特定目录,我已经完成了以下操作:
1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com
Run Code Online (Sandbox Code Playgroud)
我正在努力做的是创建只能访问的用户 /var/www/mydomain.com
- 我观察到用户正确登录到正确的文件夹,但是用户可以浏览“返回”到其他目录。我希望用户停留在特定文件夹中并且无法“浏览”回来。
有任何想法吗?
我找到了关于 chrooting 的不同文章,但根本没有想出在上面包含的步骤中使用它。
我试图chroot
进入的Arch LinuxARM
的文件系统x86_64
。
我已经看到可以qemu
通过将二进制文件复制到 chroot 系统来使用静态:
$ cp /usr/bin/qemu-arm archarm-chroot/usr/bin
Run Code Online (Sandbox Code Playgroud)
但尽管如此,我总是收到以下错误:
chroot: failed to run command ‘/bin/bash’: Exec format error
Run Code Online (Sandbox Code Playgroud)
我知道这意味着架构不同。难道我做错了什么?
我在我的 linux (rasbian) 上运行 vsftpd 作为 ftp 服务器,我以 root 用户身份登录到机器。
我想仍然只能使用 /var/www,我该如何配置 vsftpd conf 来完成它?
有没有一种简单的方法可以将 SCP/SFTP 用户限制在目录中?我遇到的所有方法都要求我通过复制二进制文件来设置 chroot jail,但我认为这没有必要。
我有一个用户被 chroot 到她的主目录,但我希望她也能够管理/var/www
. 因此,我做了以下事情:
root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试/www
使用 FileZilla打开时,它返回“没有这样的文件或目录”。我可以看到链接的目录,但我无法访问它。我究竟做错了什么?
我正在使用一个救援实时系统(类似于实时 CD)来修复我的 Debian 服务器的一些问题,如下所示:
# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/
Run Code Online (Sandbox Code Playgroud)
现在我可以 chroot 到/mnt/rescue
- 但是完成后,如何再次卸载文件系统?
umount: /mnt/rescue: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
Run Code Online (Sandbox Code Playgroud)
我猜这是因为dev
,proc
并且sys
绑定到挂载的文件系统。但是也无法卸载它们......
我打算回到 Linux 作为台式机。我想让它更安全。并尝试一些强化技术,特别是因为我计划拥有自己的服务器。
这么多的问题。