На сервере зарегистрировано некоторое количество пользователей, каждому из которых надо обеспечить возможность заходить в свою домашнюю директорию (по ssh, например) и запускать программы, но видеть пользователь должен только свою директорию, и обеспечивается это запуском его шелла под chroot’ом.
Соответственно, все нужные программы и разделяемые библиотеки к ним должны лежать в доступных пользователю поддиректориях, а благодаря chroot’у все они могут располагаться только внутри его домашней директории. Пользователей, сильно больше одного, и делать каждому по отдельной копии всех программ и библиотек накладно будет. Хочется обойтись одним физическим экземпляром на всех.
Когда один объект в файловой системе должен быть доступен в нескольких местах, это обычно решается линками. Но симлинки по понятным причинам в этом случае не работают, а хардлинки на каждый файл создавать неудобно, и вдобавок все изменения придётся воспроизводить отдельно для каждого пользователя. А на целую директорию хардлинк сделать нельзя. Кроме того, файлы вообще могут лежать в других файловых системах.
И что делать?
Вопрос на пятёрку: а если это не линукс?
Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.