Итак, я исследователь, которому поручено поддерживать ряд серверов GPU для исследователей в моей лаборатории. У меня довольно большой опыт работы с Linux, в то время как некоторые пользователи никогда раньше не использовали Linux.
У других исследователей и у меня есть root-доступ. К сожалению, при настройке требований/зависимостей/и т. д. для своих проектов они непреднамеренно повреждают или неправильно настраивают сервер, иногда способами, которые я не могу понять, как исправить.
Итак, я хочу использовать chroot, LXC или какой-либо другой вид виртуализации с низкими издержками, чтобы ограничить непреднамеренный ущерб. Например, пользователь, случайно запустивший , sudo rm -rf --no-preserve-root /
должен повредить только свой собственный контейнер. Я не собираюсь защищать от преднамеренного вредоносного ущерба или от исчерпания ресурсов (но это было бы неплохо, если бы это было «бесплатно».)
Что еще важнее, я хочу, чтобы это изменение было для них прозрачным: они все должны иметь возможность подключаться к серверу по SSH и немедленно подключаться к своему контейнеру, а также иметь возможность использовать rsync и т. д. Я должен быть единственным, кто должен понимать контейнеры. В идеале они все также могли бы получить доступ к общей папке/диску (для хранения больших наборов данных, моделей и т. д., которые мы не хотим дублировать). Если говорить конкретно, мы находимся на сервере Ubuntu 18.04.
Вкратце, я запускаю сервер Linux для нескольких пользователей с доступом SSH. Мои цели — разделить пользователей по их собственным контейнерам/виртуальным машинам, чтобы защитить от непреднамеренного повреждения, без больших накладных расходов и без необходимости для этих пользователей менять свой рабочий процесс. Как этого добиться?