На сервере зарегистрировано некоторое количество пользователей, каждому из которых надо обеспечить возможность заходить в свою домашнюю директорию (по ssh, например) и запускать программы, но видеть пользователь должен только свою директорию, и обеспечивается это запуском его шелла под chroot’ом.
Соответственно, все нужные программы и разделяемые библиотеки к ним должны лежать в доступных пользователю поддиректориях, а благодаря chroot’у все они могут располагаться только внутри его домашней директории. Пользователей, сильно больше одного, и делать каждому по отдельной копии всех программ и библиотек накладно будет. Хочется обойтись одним физическим экземпляром на всех.
Когда один объект в файловой системе должен быть доступен в нескольких местах, это обычно решается линками. Но симлинки по понятным причинам в этом случае не работают, а хардлинки на каждый файл создавать неудобно, и вдобавок все изменения придётся воспроизводить отдельно для каждого пользователя. А на целую директорию хардлинк сделать нельзя. Кроме того, файлы вообще могут лежать в других файловых системах.
И что делать?
Вопрос на пятёрку: а если это не линукс?
Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.
no subject
no subject
no subject
no subject
(есличё, nullfs во FreeBSD есть, сам видел)
no subject
no subject
nullfs на фряхе.
ZFS клон файловой системы на фряхе и Солярке.
Про линукс уже ответили.
AIX? Windows?
no subject
У меня линукс, поэтому для остальных систем задача чисто теоретическая.
Разве что кроме Windows. ssh там, конечно, есть, а chroot - вряд ли. Там же файловые системы не единое дерево образуют, в котором можно корень передвинуть пониже, а отдельные диски с буковками, которые непонятно как отображать.
no subject
no subject
no subject
no subject
Но первое, что пришло мне в голову -- сделать отдельный read-only раздел под это дело -- под /bin, /lib и чо там ещё надо.
Причём этот раздел можно сделать виртуальным, вплоть до "держать в памяти" (хоть и не полностью уверен).
Да, встаёт проблема поддержания актуальности этого раздела (вроде не особо сложная).
И возможно есть проблема подмонтировать многатыщщщ файловых систем.
И ещё я не знаю, как это делать автоматически для каждого залогинившегося пользователя (чтобы не делать на старте сервера для *всех* пользователей).
no subject
Про многотыщ не знаю, не пробовал. Наверное, какие-то ограничения есть, но в моей ситуации количество пользователей исчисляется парой десятков. Хотя тут уже не важно, будет ли это директория или отдельная файловая система, монтировать придётся каждому пользователю индивидуально.
no subject
А какие проблемы сделать раздел в файле?
no subject