LINUX.ORG.RU
ФорумTalks

Песочницы для пользователей

 


0

3

Примечание: тема, главным образом, не техническая, а для обсуждения общих концепций.

Нужно сделать «песочницу» для пользователя, в которой он смог бы ставить/удалять/обновлять пакеты, не влияя на основную систему. Имеются в виду всякие прикладные приложения: браузеры, плееры, прочая мелочёвка. Нужно для того, чтобы пользователю не приходилось давать пароль рута и чтобы он своими ручонками не убил систему.

Сразу же в голову пришла следующая идея: рут делает снапшот текущей системы (через btrfs), который отдаётся в распоряжение пользователю. Для работы с пакетами используется schroot, для запуска - chroot

Плюсы:

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

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

Есть какие-нибудь идеи?

Ответ на: комментарий от Kindly_Cat

Примеры - это два частных случая. А у нас в репах 27 тысяч пакетов.

Какие из этих пакетов «прикладные»?

alpha ★★★★★
()
Ответ на: комментарий от Kindly_Cat

это не критерии

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

как гипотетическая «песочница» без твоего личного участия должна определять допустимые пакеты для установки?

alpha ★★★★★
()

Тема кстати интересна.

К примеру бывают ситуации при посменной работе, что за одним компом сидит 5 человек. В результате или жесткие правила, что ничего нельзя установить/обновить, т.к. что-то может поломаться у еще 4-х человек, или компилить проги у себя в хомяке. Или использовать 5 физических винчестеров.

Всякие Xen'ы и прочее не годятся, т.к. видяху пробрасывать нельзя было в гостевую систему. Хотя может сейчас уже починили.

f3ex ★★
()
Ответ на: комментарий от f3ex

В результате или жесткие правила, что ничего нельзя установить/обновить т.к. что-то может поломаться у еще 4-х человек

как установка одного приложения ломает работу другого?

alpha ★★★★★
()
Ответ на: комментарий от abraziv_whiskey

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

Научись различать «ставит» и «разрешает, что можно ставить».

geekless ★★
()

Нифига костыль ты придумал :)
Неужели нельзя просто сделать так, чтобы определенные пакеты ставились пакетным менеджером в .local? Изобрести для этого отдельный флаг - и готово!

ArtKun ★★★★★
()
Ответ на: комментарий от geekless

По сути да, установка софта в /opt.

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

alpha ★★★★★
()
Ответ на: комментарий от ArtKun

Неужели нельзя просто сделать так, чтобы определенные пакеты ставились пакетным менеджером в .local? Изобрести для этого отдельный флаг - и готово!

А компилировать их кто будет?

geekless ★★
()
Ответ на: комментарий от alpha

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

qnikst ★★★★★
()
Ответ на: комментарий от Kindly_Cat

То есть ты предлагаешь создать механизм позволяющий пользователю ставить заведомо неработоспособное ПО? Это по-твоему упрощает администрирование системы?

И даже ксли не обращать на это внимание, ты не отвечаешь на суть вопроса. Как определятся «не всё»? Как отличить программы, которые пользователь может поставить и запустить, от программ, которые не может?

alpha ★★★★★
()
Ответ на: комментарий от alpha

То есть ты предлагаешь создать механизм позволяющий пользователю ставить заведомо неработоспособное ПО?

Хозяин - барин.

Как определятся «не всё»? Как отличить программы, которые пользователь может поставить и запустить, от программ, которые не может?

Которые сможет запустить - пусть запускает. Пофиг.

Kindly_Cat
() автор топика
Ответ на: комментарий от qnikst

ну мы это тут с geekless-ом как раз обсуждаем вроде

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

alpha ★★★★★
()

песочницы, лягушатники, формочки, ведёрочки и совочки с лопатками.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Kindly_Cat

В твоем случае простым разумным решением будет раздать пользователям sudo-доступ и «пусть сами договариваются». Потому что толку от твоего администрирования все равно никакого.

alpha ★★★★★
()
Ответ на: комментарий от alpha

вот, например, в генте это решено созданием префикса [1], что позволяет в системе держать user-level песочницу с полноценной системой управления пакетами, причём хост-система может быть и не linux-ом. В итоге пользователь получает все бонусы от генты, а минусы только использование большего числа дискового пространства и оперативки (хотя в случае виртуалки проблемы те же).

[1] http://www.gentoo.org/proj/en/gentoo-alt/prefix/

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)

Убейся, таю мать, ап стену!!! Убейся нахек, вместе с такими же «улучшателями» и «предлагателями»!!!!

чтобы пользователю не приходилось давать пароль рута и чтобы он своими ручонками не убил систему

для пользователя [...] он смог бы ставить/удалять/обновлять пакеты

Если ПОЛЬЗОВАТЕЛЬ и РУТ это разные тушки, то речь идет о мультиюзерской системе, за которую отвечает администратор. В том числе он отвечает за безопасность системы, и одним из элементов - на самом деле, вторым по важности - является отсутствие притащенного в неё тупым ламерьём/юзерьём дерьма - поэтому нехрен нести бред про установку софта пользователем.

УСТАНОВКА СОФТА ПОЛЬЗОВАТЕЛЕМ ЗАПРЕЩЕНА. ТОЧКА.

Н МИФИЧЕСКОЙ СФЕРИЧЕСКОЙ ДОМАШНЕЙ СИСТЕМЕ В ВАКУУМЕ РУТ И ЮЗЕР ЭТО ОДНА И ТА ЖЕ ПЕРСОНА, КОТОРАЯ СТАНЕТ РУТОМ ПОСЛЕ su/sudo И ЮЗЕРОМ ПОСЛЕ exit, ПОЭТОМУ СМ. ПРЕДЫДУЩИЙ ПУНКТ.

no-dashi ★★★★★
()
Ответ на: комментарий от f3ex

К примеру бывают ситуации при посменной работе, что за одним компом сидит 5 человек.

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

Всякие Xen'ы и прочее не годятся, т.к. видяху пробрасывать нельзя было в гостевую систему.

Есть GLX. Или... А, поянтно - вам в ОткрытоЖЛные компизы и игрушечки попялиться и порнушку в FullHD в рабочее время посмотреть? Так компизы через GLX нормально бегают, я порно - ну ничо, до дома потерпит.

no-dashi ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Я создал тему для того чтобы люди выкладывали свои идеи по решению моей задачи

Это ЛОР, детка - тут отвечают то что нужно, а не то что спрашивают!

no-dashi ★★★★★
()
Ответ на: комментарий от qnikst

давай какие-нибудь use-case что ли

Потому что в том, что мне приходит в голову, при нормальной организации работы такой песочницы просто не должно быть.

Простому пользователю многопользовательского рабочего компа никакая песочница вообще не нужна. Он использует ту систему, которую ему дают со стандартизованным списком ПО. У него только должен быть механизм быстрого обращения к админу и регламент по которому он может расширение этого списка запросить. Всё.

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

alpha ★★★★★
()
Ответ на: комментарий от no-dashi

Проблемы с психикой? Этим психиатры занимаются, ты не по адресу.

Kindly_Cat
() автор топика
Ответ на: комментарий от no-dashi

А я оставляю за собой право посылать на три буквы разговаривающих со своими голосами в голове. Считай, что ты уже послан.

Kindly_Cat
() автор топика

Песочницы нужны как минимум для того, чтобы подозрительные программы не могли утащить пользовательские данные. А иначе я и не знаю зачем нужна такая песочница.

pevzi ★★★★★
()
Ответ на: комментарий от Kindly_Cat

А как же волшебный бит? Или сдублировать базу пакетов и лок-файл, или что там пакетные системы блочит.

quiet_readonly ★★★★
()
Ответ на: комментарий от Deleted

Защита от негодной проприетарщины, сделанной по принципам индус триального программирования.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

когда «потенциальный админ» формулирует задачу в виде «как бы мне так сделать чтобы пользователи там сами разбирались, а я даже не пытался понять что они там делают» - он получает то, что заслуживает

alpha ★★★★★
()
Ответ на: комментарий от alpha

давай какие-нибудь use-case что ли

ну начиная с дурацки административных: legacy система; админ странно выполняющий/не выполняющий обязанности; отсуствие в дистрибутиве штатных средств решения задачи.

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

заканчивая возможностью установки devel библиотек средствами пакетного менеджера.

qnikst ★★★★★
()
Ответ на: комментарий от alpha

Дражайший, мне тут ваша «критика» в пипюн не впилась. Я попросил высказать идеи по решению моей задачи, всё остальное - оффтоп и не ваше дело.

Kindly_Cat
() автор топика
Ответ на: комментарий от alpha

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

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

Я на своём ноутбуке был бы не против иметь по отдельному пользователю на несколько прикладных программ, чтобы изолировать их конфиги или приватные данные друг от друга

Тебя командам su/sudo не учили?

su username -c «command»

sudo -u username command

no-dashi ★★★★★
()
Ответ на: комментарий от quiet_readonly

Перечитай тред, он не про запуск, а про установку софта. А твой вопрос совсем другой и для его решения есть готовые инструменты. selinux sandbox в федоре как пример.

alpha ★★★★★
()
Ответ на: комментарий от qnikst

legacy система

В виртуалку её. Или под замену.

админ странно выполняющий/не выполняющий обязанности

Уволить. ТК разрешает.

отсуствие в дистрибутиве штатных средств решения задачи.

Жистрибутив выбирают под задачу, а не задачу точа под дистрибутив, вообще-то.

установка программ требующих наличие различных версий базовых библиотек

yum instal compat-libstdc++-33

заканчивая возможностью установки devel библиотек средствами пакетного менеджера.

А нехрен на ПРОМЫШЛЕННОЙ системе компЕлировать. За такое обычно сначала дают по мозгам, затем смотрят что компилировал, и дают по мозгам ещё от трех до пяти раз.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

А нехрен на ПРОМЫШЛЕННОЙ системе компЕлировать. За такое обычно сначала дают по мозгам, затем смотрят что компилировал, и дают по мозгам ещё от трех до пяти раз.

иди модерируй, а пока модерируешь думай на каких промышленных системах _надо_ компилировать. Если что класс задач под это подходящий существует. Когда придумаешь перечитай тред трижды и объясни, где ты вычитал, что это обязательно ПРОМЫШЛЕННАЯ!!!111 система.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от alpha

да и я не про запуск, особенно последний пункт.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

ну начиная с дурацки административных

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

возможность установки devel библиотек средствами пакетного менеджера

Ну в моем варианте необходимый софт пакетируется, складывается в локальный реп и devel-библиотеки ставятся админом точно также как и весь остальной софт.

А насчет «тупо дешевле» - это у вас такое типичное, гентушное :) Вы ведь не признаете эффективности разделения труда. Каждый у вас одновременно и админ, и разработчик, и пользователь, и майнтэйнер. И тогда понятно удобнее когда тебе не надо никого спрашивать, чтобы тебе сделали нужную среду с нужными параметрами, а идешь и всё сам. Только вот не масштабируемое это решение.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Ну в моем варианте необходимый софт пакетируется, складывается в локальный реп и devel-библиотеки ставятся админом точно также как и весь остальной софт.

действительно проще отпакетировать всё, чем если это уже сделала соотв команда дистромейкером (что там абзацом ниже написано?)

А насчет «тупо дешевле» - это у вас такое типичное, гентушное :) Вы ведь не признаете эффективности разделения труда. Каждый у вас одновременно и админ, и разработчик, и пользователь, и майнтэйнер. И тогда понятно удобнее когда тебе не надо никого спрашивать, чтобы тебе сделали нужную среду с нужными параметрами, а идешь и всё сам. Только вот не масштабируемое это решение.

ну не знаю, наверное негентушникам виднее :)

qnikst ★★★★★
()

Про NixOS еще не вспоминали?

По описанию ТС именно ее ему и надо.

delete83 ★★
()
Последнее исправление: delete83 (всего исправлений: 1)
Ответ на: комментарий от qnikst

на каких промышленных системах _надо_ компилировать

Ни на каких. Впрочем, есть ещё красноглазые дистрибутивы, как я про них мог забыть...

no-dashi ★★★★★
()
Ответ на: комментарий от melkor217

Ух ты, нервишки.

Он россиянская версия BOFH. :D Тронь пальцем и НЕНАВИСТЬ НЕНАВИСТЬ НЕНАВИСТЬ УБИЙСТВО.

kernel ★★☆
()

Прочитал тред. Песец. Школьники-фошисты бл& и ну кидаться говно в друг друга.

Топикастер. Во первых виртуализация бывает не только тяжелой вроде XEN/vmware/... но и «легкой» (правильно называемая системная изоляция). Это openvz / vserver / lxc .

И именно ее и нужно применить для решения вашей проблемы - она для подобных задач и создавалась. Такой специфический «хостинг» получится, в смысле конфигурации, да. Не вебхостинг а такой систем-хостинг. Вполне разумное решение при определенных обстоятельствах.

Суть легкой виртуализации в том что группы процессов не видят друг друга создавая ситуацию когда каждая группа считает себя полноценным образом линукс-системы. А ядро не дает им нагадить соседям.

Никакого падения производительности в таком варианте виртуализации практически нет - так как нет прослоек между процессом и ядром.

Соответственно проблемы возникают с доступом к дисплею. Я, принципе(но это было давно) использовал для решения этого затруднения почти все методы что пришли в голову. Один метод это использовать X11 - чтобы виртуалки лезли к одному Xсерверу по xdmpc. Другой метод это таки дать виртуалкам права доступа к железу - тогда X сервер можно гонять изнутри виртуалки (Сейчас правда такая штука может и не работать). Третий метод тот же X11 но по ssh - юзеры лезут к своим виртуалкам по ssh.

В vserver патче был(и емнип до сих пор есть) патч к cтандартному vfs позволяющий делать именно то что вы хотите с пакетами. Там специфически обрабатываются хардлинки что позволяет создавать «копию» мастер системы поверх которой админ виртуалки(то есть юзер) может ставить свои пакеты стандартными средствами.
То есть вы можете держать 10 вируталок а занимать место они будут только то что занимают пакеты уникально поставленным в каждую.

Однако это все я вам говорю из расчета что инсталляция будет использоваться разумными людьми - например для разработки/тестирования. «Пусть оне ставят себе гамезы сами111» это плохая идея.

kernel ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.