Как поменять корневую директорию (chroot)

Системы, которые не вошли в список.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Как поменять корневую директорию (chroot)

Сообщение жучара »

Друзья! Задача будет считаться выполненной если поменять корневую директорию и запустить какую-нибудь программку.

Меняем вот так:

Код: Выделить всё

chroot foo

И вот везде написано, что тут должна запуститься оболочка. И везде, в том громадном объёме информации, который я перелопатил, сказано, что нужно, раз мы меняем корневую директорию, то и пути к оболочке поменять. Чего-то куда-то перенести. В общем всё куда-то скопировать, что, наверное, правильно, ибо если оболчка была, к примеру в /bin/sh, то, раз корень стал другим, то её тоже нужно перенести куда-то и не только её.

В общем, я в детали почему не вникаю- моя задача скромнее- убедиться что chroot работает, поэтому запускать буду ЧТО-НИБУДЬ. Что-нибудь это "Hello,word". "Hello, word!" это a.out. И я очень сильно подозреваю, ибо ему всё равно на все пути, ибо, как я могу судить он просто загружается в память без всяких там путей и начинает работать. Пишу с комментами; в командной сроке их, есессно, нет:

Код: Выделить всё

//убедимся, что a.out работает
# ./a.out
Hello, word!
//создадим папку foo и скопируем в неё a.out
# mkdir foo
# cp a.out foo/a.out
//убедимся, что a.out перенёсся нормально
# foo/a.out
Hello, word!
//собственно chroot с вариациями:
# chroot foo ./a.out
# chroot foo a.out
#


В общем, безрезультатно всё, не видно "Hello, word!!" Пытался я запустить исполняемый файл и с вечным циклом внутри себя (while(1)) в надежде, что я увижу как-нибудь работу процесса. Бесполезно. ЧЯДНТ? Спасибо, кто откликнется. Вся раьбота из-под root-а, естесственно.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

жучара писал(а):
21.04.2017 14:07
если оболчка была, к примеру в /bin/sh, то, раз корень стал другим, то её тоже нужно перенести куда-то и не только её.

В этот новый корень, который foo, и надо перенести, со всеми зависимостями.

жучара писал(а):
21.04.2017 14:07
Что-нибудь это "Hello,word". "Hello, word!" это a.out. И я очень сильно подозреваю, ибо ему всё равно на все пути, ибо, как я могу судить он просто загружается в память без всяких там путей и начинает работать.

Только в том случае, если слинковать его статически (опция компилятора -static).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как поменять корневую директорию (chroot)

Сообщение жучара »

Bizdelnick писал(а):
21.04.2017 14:29
Только в том случае, если слинковать его статически (опция компилятора -static).

Думал об этом вчера. Не очень получается так слинковать

Код: Выделить всё

# cc main.c -static
cc: -static: unknown option
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

А что за компилятор? И что вообще за система?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как поменять корневую директорию (chroot)

Сообщение жучара »

Bizdelnick, minix 3.1.0 у меня
А компилятор cc не понять какой версии:

Код: Выделить всё

# cc -version
Usage: cc -v<n> -vn<n> -name <name> -descr <descr> -T <dir> ...
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

Ох ты ж... Интересно, он хотя бы ELF делает, или a.out? Что говорит file a.out?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как поменять корневую директорию (chroot)

Сообщение жучара »

Bizdelnick, да это я просто на русском языке книжку Танненбаума "Операционные системы. Разработка и реализация_Таненбаум Э., Вудхалл А_2007" нашёл и пояснения к исходникам тоже на русском.

Код: Выделить всё

# file a.out
a.out: MINIX-PC 32-bit execuatable, sep I&D not stripped
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

Блин, там даже file свой собственный... Если верить википедии, на ELF они перешли только в версии 3.2, а как линкуются a.out — у меня весьма смутные представления.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как поменять корневую директорию (chroot)

Сообщение жучара »

Bizdelnick ну это ладно. Если не распыляться- есть какой-нибудь другой простой способ убедиться в работоспособности команды chroot? Без переноса ВСЕГО в другую папку?
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

Если не удаётся определить необходимый минимум, проще таки перенести всё, тем более что этого всего в MINIX не так уж много.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как поменять корневую директорию (chroot)

Сообщение жучара »

Bizdelnick, да я пошёл класическим тык скыть путём. Созал папку /home/user0/newroot и сделал её корнем. Всё получилось. Но! Для этого мне пришлось перенести в новый корень /home/user0/newroot ВЕСЬ СТАРЫЙ КОРЕНЬ /

А это значит, в свою очередь, что я имел доступ КО ВСЕМ ТЕМ ФАЙЛАМ И ПАПКАМ, ЧТО И РАНЬШЕ. даже с теми же путями. Не понимаю, стоило ли огород городить, менять корень, ведь, насколько я знаю, его меняют чтобы повысить безопасность и чтобы нельзя было лезть выше корня.

Что собно, я и увидел. К папкам /home/bin и /home/ast (папки пользователей), которые лежали ВЫШЕ корня, я действительно доступа не имел. Но разве ограничение прав на доступ к папкам не достигается простым запароливанием?

...Впрочем, как бы то ни было, задача была научиться работать с chroot и она выполнена. Вникать в преимущества chroot буду потом когда-нибудь.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

Вовсе необязательно копировать всё, можно найти какой-то необходимый минимум и ограничиться им. А изменение чего-то внутри chroot не повлияет на работоспособность основной системы. К тому же многие программы используют chroot(2) уже после того, как запустились и прочитали конфигурацию, то есть все зависимости подхватываются из основной системы, а потом какие-то потенциально небезопасные действия выполняются в chroot.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
lone_wolf
Сообщения: 206

Re: Как поменять корневую директорию (chroot)

Сообщение lone_wolf »

Bizdelnick писал(а):
24.04.2017 14:47
Вовсе необязательно копировать всё, можно найти какой-то необходимый минимум и ограничиться им.

А как это сделать на обычном Linux Debian/CentOS/etc?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как поменять корневую директорию (chroot)

Сообщение Bizdelnick »

В debian для этого есть debootstrap. Для других дистрибутивов имеются другие скрипты, в частности для многих rpm-дистрибутивов можно использовать rinse.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить