OS Inferno

индекс
78,82

И всё-таки она многопользовательская!

В OS Inferno очень необычно сделана работа с пользователями. Во-первых, когда запускается emu, вы получаете командную строку без необходимости вводить логин и пароль. При этом ваше имя пользователя выставляется таким же, как и в основной системе (host OS). Во-вторых, вы можете запустить, например, wm/wm wm/login, ввести имя другого пользователя (причём пароль у вас даже не спросят), и продолжить работу как этот пользователь. Аналогично можно воспользоваться командой runas ИМЯПОЛЬЗОВАТЕЛЯ sh, чтобы не запускать графическую оболочку.

В связи со всем этим возникает логичный вопрос: Inferno — многопользовательская система, или нет?

Да, ещё стоит вспомнить с какой простотой в Inferno «заводятся» новые пользователи: mkdir /usr/ИМЯПОЛЬЗОВАТЕЛЯ
Напрашивается логичный ответ — нееет, к чёрту такую многопользовательность! :-) Но на самом деле в Inferno и с многопользовательностью, и с безопасностью всё в порядке!

Для начала нужно осознать, что Inferno это не та система, которая будет заниматься бессмысленными глупостями. Если пользователь имеет физический доступ ко всем файлам системы (например он установил Inferno в своём домашнем каталоге), то создавать кучку пользователей с разными правами на доступ к этим файлам — прямой путь к шизофрении, а не безопасности. Если же Inferno установлена, например, в /usr/inferno root-ом — тогда совсем другое дело!

В этом случае обычно в host OS создаётся новый пользователь, например «inferno», и root при установке системы в /usr/inferno выставляет права на чтение/запись ключевых файлов Inferno только для пользователя «inferno». Теперь, когда обычный пользователь, например, powerman, запустит /usr/inferno/Linux/386/bin/emu, то он попадёт в систему как пользователь powerman, с очень ограниченными правами. Фактически, у него даже не будет домашнего каталога, если его не создаст root или не даст права на запись в каталог /usr/inferno/usr/ (что не очень безопасно) или домашний каталог не будет подмонтирован автоматически при входе пользователя из, например, каталога /home/powerman/inferno/ в host OS (к которому пользователь powerman имеет полный доступ), либо по сети.

Внимательный читатель просто обязан в этом месте возмущённо фыркнуть, и поинтересоваться: а что мешает пользователю powerman после запуска emu запустить тот же runas inferno sh и переключиться на аккаунт «inferno»? Самое смешное — ему ничего не мешает это проделать. Но прав у него после этого трюка станет не больше, а меньше!

Дело в том, что Inferno будет считать, что текущий пользователь — «inferno», и проверять права на доступ исходя из этого (т. е. он потеряет доступ к файлам powerman-а). А когда проверка прав в Inferno завершится удачно (например, для доступа к файлам принадлежащим пользователю «inferno»), и emu попытается обратиться к этим файлам, то проверку прав проведёт уже host OS. Которой все эти виртуальные фокусы внутри процесса emu (запущенного пользователем powerman) до лампочки, и которая по-прежнему считает, что текущий пользователь — это powerman. И доступ к файлам пользователя inferno не даст! В результате пользователь становится окончательно бесправным существом. :)

Пароли? Их есть у меня!

Что касается логинов и паролей, то они моментально потребуются, как только вы захотите подключить какой-нибудь сетевой ресурс. Сразу выяснится, что в сети Inferno должен существовать сервер идентификации пользователей (authentication server a.k.a. CA a.k.a. $SIGNER). И для вас на этом сервере администратор должен завести аккаунт, с любым логином и паролем (они не обязаны совпадать с именем пользователя, которое вы используете внутри Inferno). Чтобы подключиться к сетевому ресурсу вам нужно сначала обратиться на этот сервер идентификации, представиться ему под тем логином/паролем под которым вы ему известны, и получить сертификат (наподобие private/public ключей ssh). Сертификат этот вы сохраняете в файлик в своём домашнем каталоге, и используете при подключении сетевых ресурсов. (Пока вы этот файлик не удалите, обращаться к серверу идентификации вам не потребуется, это обычно одноразовая операция.)

При этом подключаемые вами сетевые ресурсы будут опознавать вас под тем именем, под которым вы зарегистрированы на сервере идентификации — оно прописано в вашем сертификате.

Кстати, как раз для безопасного запуска сервера идентификации логично использовать запуск emu от пользователя host OS inferno (например, через su/sudo в пользователя inferno от root). Тогда получится, что доступ к критичной в плане безопасности информации внутри Inferno имеет доступ только root на host OS (который его в любом случае имеет, будем откровенны).
+37
21 октября 2008, 11:20
9

комментарии (21)

+2
powerman #
BTW, я надеюсь что теперь смогу плотно заниматься Inferno — я собираюсь перевести на Inferno некоторые внутренние сервисы нашей системы. И, соответственно, планирую описывать здесь процесс использования Inferno вообще, и для реальных боевых задач в частности.

И вообще — присоединяйтесь, господа, присоединяйтесь! Будем оживлять блог.

Очень плохо, что такая конфетка, как OS Inferno, прозябает в неизвестности. Причём по единственной, но традиционной причине: разработчики слишком хороши как разработчики, и слишком плохи как продавцы и рекламщики. Им это неинтересно, видите ли! Эх…
+1
Helg #
Наконец-то! Я уж думал, что Вы больше об Inferno писать не будете.
+1
IvanD #
Думаю люди просто не доросли до Inferno OS, но, уверен будущее у этой системы есть
+2
powerman #
Если мы будем ждать, пока «люди дорастут» — будущего у неё не будет. Надо брать, изучать, начинать применять… Писать статьи, документацию, рассказывать и показывать, и, это, личным примером. Ведь для этого не требуется ничего экстраординарного, вроде перехода с винды на линух: поставил Inferno себе под винду/линух/бсд/макось как обычное приложение — и пользуйся! Без отрыва от своей основной системы и привычных приложений. Тем более, что это всё в кайф, система приятнейшая.

Да, для понимания системы нужно суметь взглянуть на мир под непривычным углом. Это не просто. Но зато — очень полезно! Даже если в результате пользоваться Inferno Вы не будете, в процессе изучения Вы получите массу интересных и нестандартных идей, которые заметно облегчат Вашу дальнейшую работу в любой ОС и на любом ЯП.
+2
PoVaR #
Адская ось!
0
micktu #
Ух, я думал, что уже могу перечислить все актуальные операционки. Оказывается, нет — о Inferno не слышал вообще. Пишите больше, очень интересно (:
+1
GKelpi #
Хитрая ОС
+2
the_bee #
Я сперва подумал, что это шутка, искал где смеятся. Ан нет, всё серьёзно. Но надо же так назвать! Среди софта хуже названия только у lame (кодировщик) и MediaTomb (медиасервер).
+2
Ferroman #
А чем название плохое? Мне нравится…
+1
tilarids #
Так это получается host os многопользовательская, а не inferno os. Немного не то. Но, в принципе, получается, что она там и не нужна, раз она есть уровнем выше.
+1
powerman #
Это не так. Когда речь заходит о работе по сети — с разделением прав пользователей всё в порядке, и эта многопользовательность реализована именно в Inferno, а не host OS. Например, зайдя по сети на другой комп под другим именем (аналог ssh) система не даст убивать чужие процессы.
+1
powerman #
Или, к примеру, в native режиме, когда никакой host OS нет и вся проверка прав лежит на Inferno. Да, Inferno не будет мешать Вам переключаться между разными юзерскими аккаунтами на Вашей локальной системе. (Примерно как root может работать от имени любого пользователя. Только в Inferno нет суперпользователей.) Но при доступе по сети, если кто-то зайдёт на Вашу систему, то он будет работать под тем аккаунтом, который прописан в его сертификате. И никакой runas или wm/login ему не поможет переключиться на другой аккаунт.
+1
powerman #
Только в Inferno нет суперпользователей.
Это я немного погорячился: eve(10).
+1
tilarids #
Ну, так это уже совсем другое дело :) Вот это уже вполне можно было бы писать в основной статье, как доказательство :)
P.S. Какая жестокая вещь — жизнь. Столько всего хочется попробовать, а времени нет. Записал Inferno в список :)
+1
aquality #
Не фига не понял, объясните пожалуйста!?
+1
DYPA #
ru.wikipedia.org/wiki/Inferno_(операционная_система)

пока впечатлило www.vitanuova.com/inferno/plugin.html

хотелось бы более простую статью отвечающую на вопросы:
зачем еще одна ось (особенности)?
установка
первые шаги
+1
powerman #
зачем еще одна ось (особенности)
  • для мелких девайсов (она может шустро работать на 1MB RAM)
  • для единообразной работы в гетерогенной среде (если есть зоопарк разных ОС и хочется на всех запустить своё приложение без головняка)
  • для распределённых вычислений
  • ну и самое главное: она очень простая и целостная, поэтому программировать под неё значительно легче — на порядки меньше неявных ловушек и уродливых интерфейсов чем в других ОС

установка
угу, я думаю описать процесс установки и начальной настройки текущей версии из svn
первые шаги
RTFM. :)
0
DYPA #
спасибо, буду ждать.
+2
snatch #
вполне адекватное название для системы, где трудятся демоны
+1
mightymouse #
Мой коммент 13-й. Вроде. Спасибо, расширяем кругозор по ОС.
0
sendmail #
спасибо, что продолжаете статьи

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.