Инструменты пользователя

Инструменты сайта


команда_chroot

Команда chroot

Изолированный shell

Debian/Ubuntu

Создание окружения "в ручную"

Примечание, в качестве исходных файлов здесь часто будут линки, превращающиеся в обычные файлы с такими же именами при копировании

# ldd /bin/bash
# ldd /bin/cat
# ldd /usr/bin/file

# man file

# mkdir /var/www/bin
# mkdir /var/www/usr/
# mkdir /var/www/usr/bin

# mkdir -p /var/www/usr/share/misc

# cp /bin/bash /var/www/bin/
# cp /bin/cat /var/www/bin/
# cp /usr/bin/file /var/www/usr/bin/

# cp /usr/share/misc/magic.mgc /var/www/usr/share/misc/

# # For i386 Debian/Ubuntu

# mkdir /var/www/lib
# mkdir /var/www/i386-linux-gnu/
# mkdir /var/www/lib/i386-linux-gnu/
# mkdir /var/www/usr/lib

# cp /lib/ld-linux.so.2 /var/www/lib/
# cp /lib/i386-linux-gnu/libtinfo.so.5 /var/www/lib/i386-linux-gnu/
# cp /lib/i386-linux-gnu/libdl.so.2 /var/www/lib/i386-linux-gnu/
# cp /lib/i386-linux-gnu/libc.so.6 /var/www/lib/i386-linux-gnu/
# cp /lib/i386-linux-gnu/libz.so.1 /var/www/lib/i386-linux-gnu/
# cp /usr/lib/i386-linux-gnu/libmagic.so.1 /var/www/usr/lib/

# # For x86_64 Debian/Ubuntu

# mkdir /var/www/lib/
# mkdir /var/www/lib64
# mkdir /var/www/lib/x86_64-linux-gnu/
# mkdir -p /var/www/usr/lib/x86_64-linux-gnu/

# cp /lib64/ld-linux-x86-64.so.2 /var/www/lib64/
# cp /lib/x86_64-linux-gnu/libtinfo.so.5 /var/www/lib/x86_64-linux-gnu/
# cp /lib/x86_64-linux-gnu/libdl.so.2 /var/www/lib/x86_64-linux-gnu/
# cp /lib/x86_64-linux-gnu/libc.so.6 /var/www/lib/x86_64-linux-gnu/
# cp /lib/x86_64-linux-gnu/libz.so.1 /var/www/lib/x86_64-linux-gnu/
# cp /usr/lib/x86_64-linux-gnu/libmagic.so.1 /var/www/usr/lib/x86_64-linux-gnu/


# # For x86_64 Gentoo

# mkdir /var/www/lib/
# mkdir /var/www/lib64
# mkdir -p /var/www/usr/lib64/

# cp /lib64/libreadline.so.6 /var/www/lib64/
# cp /lib64/libncurses.so.6 /var/www/lib64/
# cp /lib64/libc.so.6 /var/www/lib64/
# cp /lib64/ld-linux-x86-64.so.2 /var/www/lib64/
# cp /usr/lib64/libmagic.so.1 /var/www/usr/lib64/

Создание окружения через debootstrap

root@server:~# apt install debootstrap

ubuntu16# debootstrap --variant=minbase --arch amd64 xenial /var/www/

debian9# debootstrap --variant=minbase --arch i386 stretch /var/www/
debian9# debootstrap --variant=minbase --arch amd64 stretch /var/www/

CentOS

FreeBSD

Создание окружения "в ручную"

# ldd /bin/sh
# ldd /bin/cat
# ldd /usr/bin/file

# man file

# mkdir /var/www/bin
# mkdir /var/www/lib/

# mkdir /var/www/usr
# mkdir /var/www/usr/bin
# mkdir /var/www/usr/lib
# mkdir /var/www/libexec/
# mkdir -p /var/www/usr/share/misc

# cp /bin/sh /var/www/bin/
# cp /bin/cat /var/www/bin/
# cp /usr/bin/file /var/www/usr/bin/

# cp /usr/share/misc/magic.mgc /var/www/usr/share/misc/
 
# cp /lib/libedit.so.7 /var/www/lib/
# cp /lib/libncurses.so.8 /var/www/lib/
# cp /lib/libz.so.* /var/www/lib/
# cp /lib/libc.so.7 /var/www/lib/
# cp /usr/lib/libmagic.so.4 /var/www/usr/lib/
# cp /libexec/ld-elf.so.1 /var/www/libexec/

Создание окружения через make buildworld

Тестирование

debian# chroot /var/www/ /bin/bash
  или
freebsd# chroot /var/www/ /bin/sh

# echo *

# cat index.html

# file -bi index.html

# cat /etc/passwd

Тестирование изоляции процессов

debian# mount --bind /proc /var/www/proc

debian# chroot /var/www/ /bin/bash

debian# apt install procps

debian# ps ax

shell inetd web сервер в chroot

Debian/Ubuntu/FreeBSD

# mkdir /var/www/sbin

# cp /usr/local/sbin/webd /var/www/sbin/

# cat /var/www/sbin/webd
...
base=/
...

Debian/Ubuntu

# cat /etc/inetd.conf
...
#www stream tcp nowait root /usr/local/sbin/webd webd
#www stream tcp nowait nobody /usr/local/sbin/webd webd
www stream tcp nowait root /usr/sbin/chroot chroot /var/www/ /sbin/webd

FreeBSD

# cat /etc/inetd.conf
...
#http stream tcp nowait root /usr/local/sbin/webd webd
http stream tcp nowait root /usr/sbin/chroot chroot /var/www/ /sbin/webd
# service inetd restart
команда_chroot.txt · Последние изменения: 2018/02/07 08:15 — val