Помещает ли монтирование squashfs всю файловую систему в оперативную память?

У меня недостаточно баллов для комментария, но есть шанс, что это также может ответить на ваш вопрос.

Если я вас правильно понял, вы хотите разрешить локальный вход пользователей в систему, а после того, как пользователь войдет в систему, запустить новую виртуальную машину с нуля и автоматически -настроить сеанс пользователя с тем же именем? Это может очень быстро привести к красивым волосам, если я правильно понимаю ваше требование.

Как насчет этого вместо этого, что звучит как ваша предполагаемая цель --режима «киоска», за исключением случаев, когда пользователь имеет неограниченную локальную власть даже для уничтожения всей ОС, но его легко сбросить. (В данном случае автоматически. )Единственная разница, я думаю, заключается в том, что здесь не задействованы конкретные индивидуальные сеансы пользователей, потому что для того, чтобы эта идея работала, индивидуальные сеансы пользователей на самом деле не нужны, а на самом деле все усложняют. (Но если индивидуальные сеансы пользователей ЯВЛЯЮТСЯ обязательным требованием, то, по крайней мере, это решение может помочь вам начать работу в правильном направлении. Подумайте о «только для чтения -неизменяемый образ диска базовой виртуальной машины, доступный всем пользователям, но у каждого пользователя есть свой собственный файл определения виртуальной машины и разностный диск для чтения/записи, оба из которых удаляются и восстанавливаются при каждом входе в систему.)

Сначала несколько быстрых определений:

  • «Хост» или «Машина». :Физическая машина. Это может быть Windows, MacOS или Linux, это не должно иметь большого значения --, каждый из них может быть настроен таким образом, хотя не всегда очевидно, как перехватывать выходы из системы и завершения работы в любой из них. (Я знаю, что и то, и другое можно сделать в Windows и Linux, и сильно подозреваю, что в MacOS. Все они также могут быть настроены на автоматический вход -при запуске.)

  • «ВМ», «виртуальная машина» или «гость». :Виртуальная машина, работающая на хост-машине. Судя по всему, вы хотите, чтобы это был Linux, но с тем же успехом это может быть и Windows, за исключением потенциальных проблем с лицензированием. (. если пользователь напортачит с лицензией,эта ошибка -сохраняется, даже если сама ОС полностью запускается с контрольной точки.)

Каждый хост-компьютер будет иметь один «пользовательский» сеанс, а в рамках этого пользовательского сеанса — один прозрачный гостевой сеанс. Пользователь увидит или обязательно узнает о существовании гостевой сессии. (Но безопасность сеанса хоста не должна --и не должна --полагаться на эту неизвестность.)

Общие шаги:

  1. Настройте хост-компьютер для автоматического входа в одну заблокированную -отключенную учетную запись пользователя при запуске, например. "вмусер". Деактивировать время ожидания/блокировки сеанса и заставку. (Экран выключен нормально, но сеанс не блокируется.)

  2. Создайте виртуальную машину для этого пользовательского сеанса с неизменяемым диском и разностным файлом или моментальным снимком для отката.

  3. При первоначальном входе в систему (при запуске )сценарий входа запускает сеанс виртуальной машины в полноэкранном режиме (с непонятным переопределенным ключом «хост». например. блокировка прокрутки ). Этот скрипт должен ждать, пока виртуальная машина не выключится, потому что позже у него будет больше работы.

  4. Затем эта виртуальная машина автоматически -регистрируется -под пользователем root или пользователем с правами администратора.

  5. Сценарий гостевого выхода :Завершение работы всей виртуальной машины.

  6. Когда виртуальная машина выключается, ваш сценарий входа возобновляется. Он откатывается к предварительно определенному моментальному снимку. Если сеанс пользователя узла также не завершается, этот сценарий должен снова запустить резервное копирование виртуальной машины. (Затем он снова автоматически -входит в систему, и вы возвращаетесь к новому сеансу.)

  7. Сценарий выхода из хоста :Вам нужно будет связаться со сценарием входа в систему одним из множества возможных способов, чтобы либо прервать его, либо указать ему не запускать резервное копирование виртуальной машины после выполнения ее действий по откату. В любом случае, вы хотите отключить виртуальную машину (, даже "жесткое" отключение питания допустимо ). Откатывает виртуальную машину обратно к моментальному снимку.Затем либо пусть хост снова автоматически -снова войдет в систему (, что потребует наблюдения службы или демона и приведет к восстановлению чистой восстановленной виртуальной машины ), либо полностью выключит хост-машину -.

  8. Если пользователь выключает хост , происходит то же самое, что и выход из системы (, потому что сеанс пользователя сначала выходит из системы ), за исключением того, что вы хотите связаться с этим сценарием для вытеснения повторный вход в систему или избыточное завершение работы хоста ().

  9. Всякий раз, когда сеанс пользователя хоста входит в систему (, что по иронии судьбы может быть более надежным с точки зрения времени, чем выполнение этого при запуске хоста ), сценарий входа всегда должен откатывать виртуальную машину до моментального снимка перед ее запуском (. ] или, по крайней мере, проверьте ), на случай, если в прошлый раз он не был корректно закрыт. Или, если вы ДЕЙСТВИТЕЛЬНО хотите быть надежным, сценарий запуска хост-машины может выполнить всю необходимую очистку, чтобы --удалить все файлы, потенциально используемые для межпроцессного -обмена данными, откатить виртуальную машину на всякий случай и т. д. --] все это время сценарий входа в систему, если он неизбежно инициируется, пока все это происходит, ждет, пока этот процесс не будет завершен, прежде чем продолжить.

Таким образом, пользователь может делать в виртуальной машине все, что захочет, в том числе «rm -rf /», а выключение виртуальной машины, выход из сеанса пользователя хоста или перезагрузка хоста восстановит ее автоматически. Пока сессия хост-пользователя достаточно хорошо заблокирована и защищена, а неизменяемый диск виртуальной машины не может быть удален -пользователем (, что было бы хорошей причиной для его настройки таким образом, а не моментальными снимками ), тогда пользователям будет ДЕЙСТВИТЕЛЬНО сложно испортить систему, даже если они выйдут из виртуальной машины. (При этом любой, у кого есть физический доступ, может скомпрометировать компьютер. И само собой разумеется --, поэтому я бы не хотел говорить --, что любые эксплойты в основной ОС также могут поставить под угрозу ваше решение.Но, по крайней мере, эксплойты для гостя в основном спорны с точки зрения постоянного повреждения гостевой ОС, поскольку она все равно откатывается -назад/сбрасывается.)

Я вполне уверен, что что-то в этом роде возможно, достаточно близко к тому, что было изложено --, потому что я знаю, что возможен каждый из отдельных шагов, и сделал многие из них сам.

В общем, вам нужно что-то вроде "режима киоска -", который вы можете найти в Google. Конечно, режимы киоска обычно также включают в себя блокировку взаимодействия с пользователем, что противоположно тому, что вы хотите, но могут быть некоторые идеи, которые помогут вам приблизиться, или похожие на это, но с другой технологией (, например. контейнеры ).

Удачи!

2
10.06.2021, 08:22
1 ответ

Монтирование файловой системы squashfs не требует ее распаковки в память; декомпрессия выполняется на лету, по мере необходимости. Существует небольшой внутренний кэш , чтобы избежать повторной распаковки одних и тех же данных, но это все.

Файловые системы squashfs могут хранить до 2 64 байтов данных, поэтому их полная распаковка при монтировании нецелесообразна.

3
28.07.2021, 11:25

Теги

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