Моделюйте chroot з неподіленням


13

Я намагаюся написати завантажувач для мінімальної дистрибуції Linux від джерела.

Я хотів би будувати в хротоподібному середовищі. Це повинно спростити упаковку. Мені це питання до безпеки не хвилює. Завантажувальний пристрій не повинен вимагати будь-яких нестандартних сторонніх команд. Було б чудово, якби і кореня немає потреби.

Ось чому fakechroot (1) fakeroot (1) chroot (1) - це не саме те, що я шукаю.

Чи можна підробити / використовувати unshare (1) та / bin / sh?


AFAICS unshare(1)- це досить тонка обгортка навколо колекції системних викликів, що працюють тільки в коренях, і (принаймні, у Fedora 18) це не SUID, тому я дуже сумніваюся, що це буде працювати для некористуючих користувачів.
vonbrand

О, це соромно. Я опинився під враженням, що не поділено. Я думаю, що я добре з коренем.
Коріння

4
З випуском нового ядра Linux 3.8 ви можете використовувати функції простору імен як некореневі. Але це новий блискучий матеріал: спочатку вам потрібен простір імен uid, і unshare ще не підтримує це. І ваші дії все одно будуть обмежені.
BatchyX

Відповіді:


5

Так. Якщо ваше ядро підтримує user_namespaces (і вони включені) , ви можете спочатку "імітувати root" користувача, який потім отримує право викликати chroot(як реальний користувач root). (Раніше потрібно було обмежитися лише користувачем root через можливість ескалації привілеїв звичайним користувачем (скажімо, через бінарні файли set-UID-кореневих файлів та користувацькі бібліотеки в каталозі chroot).)

Ви можете спробувати це у своїй оболонці:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

нерозпізнаний варіант '--map-root-user'
Zibri

1
@ Zibri Це працює для мене зараз, з unshareвід util-linux-2.30.2-alt1
imz - Іван Захарящев

1

Просто зв’яжіть або встановіть fakeroot / fakechroot, оскільки вони вже цілком підходять для цього. Подивіться на натхнення у cdebootstrap.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.