LINUX.ORG.RU
решено ФорумAdmin

[chroot] Не получается запустить статически слинкованный файл

 


0

1

Я пытаюсь запустить прогу в chroot окружении. Вот мои действия:

$ls -l bin/
-rwxr-xr-x 1 mt mt 4720474 2011-03-03 23:20 webface

$ldd bin/webface 
	statically linked

$sudo chroot bin webface
chroot: failed to run command `webface': No such file or directory

$sudo chroot bin ./webface
chroot: failed to run command `./webface': No such file or directory

$sudo chroot bin /webface
chroot: failed to run command `/webface': No such file or directory

Система: ubuntu 10.10


А в какой каталог вы делате chroot, там есть минимальный набор файлов для работы системы ? Если там только ваша программа, ничего не выйдет.

Там должны находиться: файлы устройств /dev/console, интерпретатор коммандной оболочки, точки монтирования /proc, /sys и часть основных катлогов корня.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

>Там должны находиться: файлы устройств /dev/console, интерпретатор коммандной оболочки, точки монтирования /proc, /sys и часть основных катлогов корня.

нет.

Led ★★★☆☆
()
Ответ на: комментарий от Led

Просто su не сработало. Получилось запустить с sudo:

$ls -l bin/
-rwxr-xr-x 1 mt mt 4720474 2011-03-03 23:20 webface
$which chroot
/usr/sbin/chroot
$sudo su -c "/usr/sbin/chroot bin ./webface" 
/usr/sbin/chroot: failed to run command `./webface': No such file or directory
Результат всё тот же... :(

Я ещё попробовал пошагово выполнять действия из руководства. Даже в этом случае ничего не заработало.

Система 64-х битная (может в этом проблема?)

mors
() автор топика
Ответ на: комментарий от mors

А бинарник без chroot вобще запускается? Может он битый или ещё чего. Что говорит «objdump -a webface»? Какая система?

Я ещё попробовал пошагово выполнять действия из руководства. Даже в этом случае ничего не заработало.

Чего не заработало? Скопированный в chroot bash не заработал? Может у вас этот раздел смонтирован с noexec?

mky ★★★★★
()
Ответ на: комментарий от mky

А бинарник без chroot вобще запускается?

Да, запускается. Это самописный вэб-сервер и по этому хочется его максимально изолировать :)

Какая система?

Linux blackpc 2.6.35-25-generic #44-Ubuntu SMP Fri Jan 21 17:40:44 UTC 2011 x86_64 GNU/Linux, Ubuntu 10.10

$objdump -a bin/webface 

bin/webface:     file format elf64-x86-64
bin/webface

Чего не заработало? Скопированный в chroot bash не заработал? Может у вас этот раздел смонтирован с noexec?

$mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
/dev/sda3 on /home type ext4 (rw,commit=0)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/mt/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=mt)

$ldd /bin/bash
	linux-vdso.so.1 =>  (0x00007fffc3155000)
	libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9163d37000)
	libdl.so.2 => /lib/libdl.so.2 (0x00007f9163b33000)
	libc.so.6 => /lib/libc.so.6 (0x00007f91637af000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f9163f9e000)

$tree -F /usr/chroot
/usr/chroot
|-- bin/
|   `-- bash*
|-- etc/
|-- home/
|-- lib/
|   |-- ld-linux-x86-64.so.2*
|   |-- libc.so.6*
|   |-- libdl.so.2
|   `-- libncurses.so.5
|-- var/
`-- webface*

$sudo chroot /usr/chroot
chroot: failed to run command `/bin/bash': No such file or directory
mors
() автор топика
Ответ на: комментарий от mors

Наверно, сначало лучше добиться работающего chroot с bash'е, т.к. он точно должен работать, а уже потом разбираться с webface.

Относительно bash, у вас почему то нет бита исполнения на libdl.so.2 и libncurses.so.5. И ещё, /lib64/ld-linux-x86-64.so.2 ( /lib64/, а не /lib/).

mky ★★★★★
()

как минимум нужно
ld-linux
libnss
без них даже файл запуска не найдется, как раз то что у вас и происходит
плюс /dev/null /dev/zero /dev/random по необходимости

rovdy
()
Ответ на: комментарий от mky

Да, проблема была именно с lib64/. Скопировал туда ld-linux-x86-64.so.2 и баш вместе с моей прогой заработали. Спасибо!! :)

mors
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.