Наличие выполняется, разрешение на каталоге требуется для чтения inodes файлов в рамках того каталога.
В рамках того каталога единственный файл, ssl-cert-snakeoil.key
, который прочитал разрешение только для ssl-cert
группа (и корень). Таким образом, эта комбинация полномочий является самым минимальным набором полномочий, который позволил бы члену ssl-cert
группа для доступа к файлу.
Ограничение доступа к этому файлу важно, потому что это содержит закрытый ключ для любых сервисов, которые Вы выполняете, которые используют SSL. Идея состоит в том, что только пользователи (который в этом случае соответствовал бы сервисам, например, apache
пользователь), которые требуют доступа к ключу, члены этой группы. Всем другим пользователям запрещают. Закрытый ключ должен остаться секретным, чтобы гарантировать, что Вы - то, кто Вы говорите, что Вы - когда клиент устанавливает зашифрованное соединение к Вашему сервису.
вам нужно запустить ldd против bash ldd $(which bash)
, тогда вы можете найти отсутствующую зависимость, например, если вы не смонтировали/скопировали lib64, для 64-х систем это произойдет через эту ошибку.
Если вы выполняете кросс-компиляцию, вам нужно использовать симулятор qemu, который может запускать /mnt/somedir/bin/bash. Ниже приведены шаги для кросс-компиляции armhf. Действия для других архитектур должны быть аналогичными.
sudo apt -получить установку qemu -пользователь -статический
sudo cp /usr/bin/qemu -arm -static /mnt/usr/bin/
Как только вы скопируете qemu -arm -static в /mnt/usr/bin, вы сможете использовать chroot.
Подробнее см. здесь:https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html
Кое-что еще никто не упомянул, если цель не состоит в том, чтобы хранить копии библиотек, которые вы находите с помощью ldd. Когда вы создаете busybox, он учитывает LDFLAGS=--static
в соответствии с их FAQ . Это встроит все необходимые библиотеки в ваши двоичные файлы. Это увеличивает размер двоичных файлов, но... вам в любом случае понадобится большая часть этого дискового пространства для хранения того, что вы находите с помощью ldd.
Обратите внимание, что вам все еще может понадобиться скопировать библиотеку c (libc.so.6 ), базовую математическую библиотеку (libm.so.6 ), библиотеку разрешения пространства имен (libresolv.so.2 )и библиотеку ядра (в моем случае, так как я использую Raspberry Pi, ld -linux -armhf.so.3 ). Вы можете использовать инструмент ldd, как указано в других ответах на ваш статический двоичный файл busybox, чтобы узнать, так ли это.
Они, в свою очередь, могут зависеть от других библиотек. Чтобы узнать, так ли это, вы можете использовать файловый инструмент. Я использую полный путь к libm.so.6 Raspberry Pi в качестве примера:
file /chroot/lib/arm-linux-gnueabihf/libm.so.6
В моем случае, поскольку процессорам ARM требуется много библиотек, я скопировал всю папку -linux -gnueabihf в свою папку lib, что позволило мне получить доступ к моему chroot.
Баш elf
недоступен в /bin
, /usr/bin/
и т. д.
cp -rf --preserve=links /usr/bin/* myroot/usr/bin/; cp --preserve=links -rf /lib64/* myroot/lib64/;..
скопировать все библиотеки и файлы ELF.
sudo nano /etc/passwd
После этого ищите пользователя, который доставляет вам проблемы и проверяйте, что перед /bin/bash нет пробелов или любого другого символа, в случае chroor проверяйте пользователя root.
nano можно заменить любым текстовым редактором.
Быстрая команда для копирования всех библиотек, требуемых командой для этого примера /bin/bash (Вы должны заменить {CHROOT PATH}
на путь к вашему chroot)
файл, который обычно вставляется в lib
lib64
, зависит от требования /bin/bash
list="$(ldd /bin/bash | egrep -o '/lib.*\.[0-9]')"
for i in $list; do cp -v --parents "$i" "{CHROOT PATH}"; done
Поскольку корень был изменен, относительные ссылки на bash и другие библиотеки больше не работают. Вам нужно скопировать эти библиотеки в вашDIR_TO_CHROOT
mkdir /DIR_TO_CHROOT/bin cp /bin/bash /DIR_TO_CHROOT/bin # copy bash
lib
и lib64
для размещения этих зависимостей mkdir /DIR_TO_CHROOT/lib{,64} # create lib and lib64 folders
ldd /bin/bash
linux-vdso.so.1 (0x00007fffa89d8000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f6fb8a07000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6fb8803000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6fb8412000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6fb8f4b000)
cp /lib/x86_64-linux-gnu/libtinfo.so.5 /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libc.so.6 /DIR_TO_CHROOT/lib #lib cp /lib64/ld-linux-x86-64.so.2 /DIR_TO_CHROOT/lib64 #lib64
Теперь вы сможете использовать bash
chroot /my-new-root bash