Как chroot-процесс может получить доступ к своим библиотечным зависимостям? - PullRequest
0 голосов
/ 03 мая 2011
  1. После того, как я поместил процесс в chroot тюрьму, он может получить доступ к библиотеке libc.so, которая находится за пределами тюрьмы. Почему или, может быть, как?

  2. Если у нас есть мягкая ссылка, ссылающаяся на файл за пределами тюрьмы, можем ли мы получить доступ к основному файлу?

  3. можем ли мы использовать chroot в многопоточных приложениях? или если мы изменим корневой каталог из одного потока, изменится корневой каталог всего процесса?

  4. Я читал, что функция chroot не обеспечивает реальной безопасной среды, есть ли альтернативное решение для Linux?

1 Ответ

1 голос
/ 03 мая 2011
  1. Пока он открыт до вызова chroot, он все еще открыт, как и его собственный двоичный файл.Однако chroot является привилегированной операцией, поэтому вызывающий ее процесс, вероятно, изменит идентичность и выполнит реальный процесс, и у него не будет доступа к libc.so, если он не доступен в chroot.
  2. Мягкая ссылкаразрешен в пространстве имен процесса, поэтому он не будет разрешен в файл за пределами chroot.
  3. Я не уверен (и подозреваю, что это не так).Обычно это не имеет значения, потому что, будучи привилегированной операцией, она выполняется в простой оболочке, которая не является многопоточной, а только запускает многопоточное приложение после chroot, закрывая все файловые дескрипторы, изменяя текущий каталог в chroot и отбрасывая привилегии..
  4. Chroot не является безопасным.Корень может легко выйти (например, при повторной установке устройства).Существуют Linux-Vserver , lxc и OpenVZ , которые обеспечивают безопасную изоляцию процесса.LXC использует cgroups возможность Linux (начиная с ядра 2.6.29), двум другим, похоже, требуется исправленное ядро.Вы также можете настроить cgroup самостоятельно, если вам нужно просто заключить в тюрьму одно приложение.
...