Можно ли запустить процесс в chroot с виртуальной файловой системой / proc под Linux?

828
user4674453

Мне нужно запустить процесс в chroot с виртуальной файловой системой / proc, поэтому процесс не может получить доступ к другим процессам, работающим на том же хосте. Процесс должен быть запущен под пользователем root и иметь полный доступ к файлам в chroot. Также любые изменения в файловой системе должны быть сохранены в каталоге chrooted.

Это вообще возможно?

1
Есть ли какая-то конкретная причина для попытки добиться такого поведения? ddnomad 7 лет назад 1
контейнер VM или LXC даст вам реально выглядящий `/ proc`, фактически не являясь` / proc` хоста. quixotic 7 лет назад 0

2 ответа на вопрос

0
davidgo

Возможно монтировать / proc в среде chroot - подробнее об этом смотрите в этом ответе .

У меня были бы опасения, что программа не сможет получить доступ к другим процессам, так как большая часть (если не вся) этой информации может быть доступна через / proc (/ proc / [pid number] даст вам доступ к этому).

Непонятно, что вы подразумеваете под «изменениями в файловой системе», но если эти изменения относятся к файловой системе, исключая специальные биты, такие как / proc, / dev / etc, они останутся в chroot.

монтирование реального `/ proc` в chroot - это именно то, чего пытается избежать вопрос. quixotic 7 лет назад 0
@quixotic - если это так, ответ - «нет» - если только не предоставлено намного больше информации о том, какие конкретные части / proc необходимы. Перечитывая вопрос, я задаюсь вопросом, правильное ли понимание файловых систем - как это делает «изменения в файловой системе должны быть сохранены», подразумевает доступ к файлам вне области каталогов в изолированной среде chroot. davidgo 7 лет назад 0
согласитесь, это не совсем имеет смысла - это может быть использование базы chroot, доступной только для чтения, такой как образ виртуальной машины в докере или моментальный снимок, или запуск chroot в ISO-образе, смонтированном в цикле, или ... quixotic 7 лет назад 0
> Непонятно, что вы имеете в виду под «изменениями в файловой системе», чтобы фанаты докеров не наводнили тему :) Что мне действительно нужно, так это возможность установить любой пакет, который вытягивает множество зависимостей таким образом, чтобы он выиграл ». не загрязняет систему и может использоваться в оболочке, как это установлено в / usr / bin. Поэтому я хотел бы, чтобы он использовал основной корень, но все изменения, которые он производит, включая зависимости, журналы и т. Д., Должны храниться в отдельном каталоге. Я хочу, чтобы он ничего не знал о корневой системе и процессах, которые она запускает, поскольку она не будет работать гладко. user4674453 7 лет назад 0
0
lynx

Вы можете сделать это, используя пространства имен Linux. Контейнеры (Docker, lxc) сделаны из них. man unshareтвой друг. Остерегайтесь, что злоумышленник может легко убежать, chrootесли вы используете его неправильно Прочтите об этом, прежде чем использовать его. Вы были предупреждены.

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