chroot: отказавший к команде выполнения ‘/bin/bash’: Никакой такой файл или каталог

Наличие выполняется, разрешение на каталоге требуется для чтения inodes файлов в рамках того каталога.

В рамках того каталога единственный файл, ssl-cert-snakeoil.key, который прочитал разрешение только для ssl-cert группа (и корень). Таким образом, эта комбинация полномочий является самым минимальным набором полномочий, который позволил бы члену ssl-cert группа для доступа к файлу.

Ограничение доступа к этому файлу важно, потому что это содержит закрытый ключ для любых сервисов, которые Вы выполняете, которые используют SSL. Идея состоит в том, что только пользователи (который в этом случае соответствовал бы сервисам, например, apache пользователь), которые требуют доступа к ключу, члены этой группы. Всем другим пользователям запрещают. Закрытый ключ должен остаться секретным, чтобы гарантировать, что Вы - то, кто Вы говорите, что Вы - когда клиент устанавливает зашифрованное соединение к Вашему сервису.

58
07.05.2014, 01:27
9 ответов
[12155]chroot[118685] пытается запустить оболочку, которая установлена в переменной окружения [118686]$SHELL[118687] по умолчанию, но он ищет его в вашем новом корневом каталоге, который, кажется, не содержит [118688]/bin/bash[118689], так что он не может запуститься. [12156] Вы можете попросить chroot запустить другую программу внутри нового корня, просто добавив ее в качестве параметра: [12157] Обратите внимание, что путь команды интерпретируется [118690] внутри [118691] вашего нового корня, поэтому в данном примере вызываемая программа на самом деле находится в [118692]/ваша/ново/корневая/бинная/футовая [12158]
4
27.01.2020, 19:33
[118250] Эта ошибка означает, что внутри chroot отсутствует каталог [118672]/bin/bash[118673] [118674]. Обязательно укажите, где исполняемый файл [118676] bash[118677] (или другой оболочки) находится в каталоге [118678] chroot[118679]. [12153] Если у вас есть [118680]/mnt/somedir/usr/bin/bash[118681], то выполните [118682]chroot /mnt/somedir /usr/bin/bash[12154]
35
27.01.2020, 19:33

вам нужно запустить ldd против bash ldd $(which bash), тогда вы можете найти отсутствующую зависимость, например, если вы не смонтировали/скопировали lib64, для 64-х систем это произойдет через эту ошибку.

1
27.01.2020, 19:33

Если вы выполняете кросс-компиляцию, вам нужно использовать симулятор qemu, который может запускать /mnt/somedir/bin/bash. Ниже приведены шаги для кросс-компиляции armhf. Действия для других архитектур должны быть аналогичными.

  1. Первая установка qemu -пользователь -статический

sudo apt -получить установку qemu -пользователь -статический

  1. Затем скопируйте двоичный файл qemu -arm -static в каталог chroot

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

4
27.01.2020, 19:33

Кое-что еще никто не упомянул, если цель не состоит в том, чтобы хранить копии библиотек, которые вы находите с помощью 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.

0
27.01.2020, 19:33

Баш elfнедоступен в /bin, /usr/bin/и т. д.

cp -rf --preserve=links  /usr/bin/* myroot/usr/bin/; cp --preserve=links  -rf /lib64/*  myroot/lib64/;..

скопировать все библиотеки и файлы ELF.

0
29.01.2020, 12:41
sudo nano /etc/passwd 

После этого ищите пользователя, который доставляет вам проблемы и проверяйте, что перед /bin/bash нет пробелов или любого другого символа, в случае chroor проверяйте пользователя root.

nano можно заменить любым текстовым редактором.

0
02.05.2021, 21:30

Быстрая команда для копирования всех библиотек, требуемых командой для этого примера /bin/bash (Вы должны заменить {CHROOT PATH}на путь к вашему chroot)

файл, который обычно вставляется в liblib64, зависит от требования /bin/bash

list="$(ldd /bin/bash | egrep -o '/lib.*\.[0-9]')"
for i in $list; do cp -v --parents "$i" "{CHROOT PATH}"; done
0
06.09.2021, 04:29

Поскольку корень был изменен, относительные ссылки на bash и другие библиотеки больше не работают. Вам нужно скопировать эти библиотеки в вашDIR_TO_CHROOT

  1. Копировать баш
     mkdir /DIR_TO_CHROOT/bin
     cp /bin/bash /DIR_TO_CHROOT/bin # copy bash
     
  2. Скопируйте зависимости 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
0
15.09.2021, 20:22

Теги

Похожие вопросы