13 636
правок
Изменения
м
Нет описания правки
Конкретно, в запущенном из старого корня процессе получается так:
* <tt>cd / -</tt> → попадаем в старый корень (rootfs).* <tt>ls /.. -</tt> → листается новый корень.* <tt>ls /<любая_папка>/.. -</tt> → листается новый корень.* <tt>cd /.. -</tt> → всё-таки остаёмся в старом корне.* <tt>mount --move /.. /root -</tt> → самое интересное. Новый корень перемещается в подпапку rootfs /root, а остальная система становится как бы запущенной в chroot’е.
А из chroot’а, как известно, можно вылезти — нужно только получить открытый дескриптор на директорию, находящуюся ВНЕ текущего корня. Делается это путём открытия / и потом ещё одного chroot’а в его подпапку. После этого достаточно сделать fchdir в открытый дескриптор и потом «cd ..» столько раз, сколько нужно.