Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

 
Reply to this topic Start new topic
> Как поменять корневую директорию (chroot)
жучара
bookmark
gyfbbdvkffmrljmmmwd
Apr 21 2017, в 14:07
Сообщение #1


Новичок
Иконка группы

Сообщений: 25

Вставить имя   :   Цитата

ОС: minix 3.1.0

Группа: Участники

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

Меняем вот так:
Код
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-а, естесственно.
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 21 2017, в 14:29
Сообщение #2


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

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

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

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

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


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
жучара
bookmark
gyfbbdvkffmrljmmmwd
Apr 21 2017, в 21:09
Сообщение #3


Новичок
Иконка группы

Сообщений: 25

Вставить имя   :   Цитата

ОС: minix 3.1.0

Группа: Участники

Автор темы
Цитата(Bizdelnick @ Apr 21 2017, в 14:29) *
Только в том случае, если слинковать его статически (опция компилятора -static).

Думал об этом вчера. Не очень получается так слинковать
Код
# cc main.c -static
cc: -static: unknown option
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 21 2017, в 21:23
Сообщение #4


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

А что за компилятор? И что вообще за система?


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
жучара
bookmark
gyfbbdvkffmrljmmmwd
Apr 21 2017, в 21:31
Сообщение #5


Новичок
Иконка группы

Сообщений: 25

Вставить имя   :   Цитата

ОС: minix 3.1.0

Группа: Участники

Автор темы
Bizdelnick, minix 3.1.0 у меня
А компилятор cc не понять какой версии:
Код
# cc -version
Usage: cc -v<n> -vn<n> -name <name> -descr <descr> -T <dir> ...
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 22 2017, в 14:27
Сообщение #6


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

Ох ты ж... Интересно, он хотя бы ELF делает, или a.out? Что говорит file a.out?


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
жучара
bookmark
gyfbbdvkffmrljmmmwd
Apr 22 2017, в 18:52
Сообщение #7


Новичок
Иконка группы

Сообщений: 25

Вставить имя   :   Цитата

ОС: minix 3.1.0

Группа: Участники

Автор темы
Bizdelnick, да это я просто на русском языке книжку Танненбаума "Операционные системы. Разработка и реализация_Таненбаум Э., Вудхалл А_2007" нашёл и пояснения к исходникам тоже на русском.
Код
# file a.out
a.out: MINIX-PC 32-bit execuatable, sep I&D not stripped
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 22 2017, в 20:09
Сообщение #8


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

Блин, там даже file свой собственный... Если верить википедии, на ELF они перешли только в версии 3.2, а как линкуются a.out — у меня весьма смутные представления.


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
жучара
bookmark
gyfbbdvkffmrljmmmwd
Apr 22 2017, в 20:36
Сообщение #9


Новичок
Иконка группы

Сообщений: 25

Вставить имя   :   Цитата

ОС: minix 3.1.0

Группа: Участники

Автор темы
Bizdelnick ну это ладно. Если не распыляться- есть какой-нибудь другой простой способ убедиться в работоспособности команды chroot? Без переноса ВСЕГО в другую папку?
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 22 2017, в 20:40
Сообщение #10


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

Если не удаётся определить необходимый минимум, проще таки перенести всё, тем более что этого всего в MINIX не так уж много.


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик


Спасибо сказали:
Go to the top of the page
 
+Quote Post
жучара
bookmark
gyfbbdvkffmrljmmmwd
Apr 23 2017, в 21:59
Сообщение #11


Новичок
Иконка группы

Сообщений: 25

Вставить имя   :   Цитата

ОС: minix 3.1.0

Группа: Участники

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

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

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

...Впрочем, как бы то ни было, задача была научиться работать с chroot и она выполнена. Вникать в преимущества chroot буду потом когда-нибудь.
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 24 2017, в 14:47
Сообщение #12


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

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


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
lone_wolf
bookmark
gyfbbdvkffmrljmmmwd
Apr 26 2017, в 13:46
Сообщение #13


Новичок
Иконка группы

Сообщений: 28

Вставить имя   :   Цитата

Группа: Участники

Цитата(Bizdelnick @ Apr 24 2017, в 13:47) *
Вовсе необязательно копировать всё, можно найти какой-то необходимый минимум и ограничиться им.

А как это сделать на обычном Linux Debian/CentOS/etc?
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Apr 26 2017, в 14:18
Сообщение #14


grammatikführer
Иконка группы

Сообщений: 12712

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

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

В debian для этого есть debootstrap. Для других дистрибутивов имеются другие скрипты, в частности для многих rpm-дистрибутивов можно использовать rinse.


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24th September 2017 - в 07:53




Rating@Mail.ru