Pull to refresh

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

Reading time3 min
Views2K
В 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 (который его в любом случае имеет, будем откровенны).
Tags:
Hubs:
Total votes 53: ↑45 and ↓8+37
Comments21

Articles