LINUX.ORG.RU
ФорумTalks

Каждой программе свой пользователь?


0

0

Система GNU/Linux — это клон Unix первоначально.
А UNIX — это многопользовательская и многозадачная система. Её модель прав доступа (владелец, группа, остальные) предназначена для изоляции пользователей друг от друга. Принцип — каждому пользователю свой каталог.

Но сейчас компьютеры с линуксом используются в основном в совсем другой ситуации — пользователь только один, который имеет над ней полный контроль. Компьютеры — персональные.

В итоге получается, что если работать с системой как обычно, никакой особенной безопасности и нет. Программы запускаются под рутом, хотя на самом деле это не нужно (скажем, мы хотим всего лишь примонтировать образ компакт-диска или собрать пакет)...
По-моему, было бы логично для таких систем сделать специальную ОС или дистрибутив, однопользовательский, но с разными правами для разных программ.
Пример: firefox запускается под пользователем firefox, который имеет право записи только в $HOME/.firefox и всё, аналогично другие программы — восновном имеющие право на запись только туда, куда это совершенно им необходимо. В личные же директории других программ могут заходить только программы, как раз для этого предназначенные — файловые менеджеры, архиваторы и тд... Я знаю, что существуют всякие SElinux и apparmor, но может можно это сделать в специальном дистре линукса на основе модели rwx?
Кстати, если что, права у программ должны отличаться ещё и в зависимости от контекта, например, konqueror, используемый как браузер должен иметь право на запись только в свои конфиги, а запущенный как файл-менеджер — должен иметь доступ ко всем директориям.

Вопрос: есть ли ОС или дистрибутивы, сделанные так чтоб ограничивать не пользователя, а конкретные программы? Раньше Unix ограничивал излишне любопытных пользователей друг от друга, но программы могли всё, теперь же наоборот надо чтоб программы были ограничены, а пользователь мог всё. Мы ведь хотим, чтоб случайно скачанная с интернета игрушка на питоне просто работала и в неё можно было спокойно играть, даже если автор спрятал где-то в Makefile rm -rf /

★★★★★

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

xorik ★★★★★ ()

>Программы запускаются под рутом...скажем, мы хотим всего лишь примонтировать образ компакт-диска или собрать пакет
ЕРЕСЬ!

firefox запускается под пользователем firefox, который имеет право записи только в $HOME/.firefox

ЕРЕСЬ! а как сливать/заливать файлО?
короче один из нас точно курил что-то нелегальное!

megabaks ★★★★ ()

>firefox запускается под пользователем firefox, который имеет право записи только в $HOME/.firefox и всё
А я хочу сохранить страничку/картинку открытую в FF в каталог ~/foo, что мне делать?

anotheranonymous ()

Не нужно. У пользователей линукса украсть нечего, кроме исходников ядра (c) Касперский

fang ()

Ерунда. За одним компом часто несколько пользователей бывает. Да и взаимосвязь между программами будет уж очень сложной.

drull ★☆☆☆ ()

пользователь только один

4.2 у меня три пользователя, один для файло, другой для тестирования херни, третий рабочий.

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

> man Plan9.
Что конкретно там есть такого, что напоминает описанную мной концепцию?

Xenius ★★★★★ ()

Кто-то сегодня говорил, что в андроиде так.

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

> А если я из браузера музыку качаю, представляешь какой гемморой её потом перекидывать и менять права
Ну хорошо, есть специальный атрибут, забыл как называется, стоит на /tmp (1777/drwxrwxrwt), такой же должен быть на папке music, так что любая программа может туда добавлять файлы, но не изменять уже имеющиеся и добавленные другой программой. Геморроя быть не должно, это был всего лишь один из примеров возможной реализации. В любом случае, идея такая что пользователь должен иметь возможность делать что угодно без лишних телодвижений, но при этом быть в безопасности от возможных вредоносных действий любых запускаемых программ... (если полный доступ к $HOME будут иметь не все программы, как сейчас, а только те которым нужно, такие как файл-менеджеры)

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

>4.2 у меня три пользователя, один для файло, другой для тестирования херни, третий рабочий.


А как у тебя все провернуто? Расскажи-ка подробнее.

ShTH ()

tl;dr

Ты хочешь изобрести SELinux?

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

> А я хочу сохранить страничку/картинку открытую в FF в каталог ~/foo, что мне делать?
На директории ~/foo должен быть флаг t

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

>На директории ~/foo должен быть флаг t
заи....я рисовать флаги!

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

и что толку, все равно эта красавица готовится отправиться на свалку истории

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

> Ерунда. За одним компом часто несколько пользователей бывает. Да и взаимосвязь между программами будет уж очень сложной.
Нужно — ибо секурити. Не настолько и сложной чтоб не сделать.
Даже если несколько пользователей бывает — это гораздо реже чем когда пользователь один, но хочет запускать любые левые программы без особого страха и не бояться дырявых браузеров (а даже наш горячо любимый firefox дыряв). Много пользователей тоже можно сделать, но смысл в том, что гораздо важней ограничить возможности программ, а не пользователей (в смысле сидящих за компом, а не в смысле строк из /etc/passwd), в конце концов, такие пользователи всё равно имеют физический доступ к компу и могут сделать init=/bin/sh

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

> 4.2 у меня три пользователя, один для файло, другой для тестирования херни, третий рабочий.
Я может неясно выразился, но как я понимаю, за твоим компом сидит регулярно только один пользователь — ты. Это у тебя аккаунтов три. Вот я и говорю про автоматизацию, чтоб ОС следила за программами. когда им какие права дать, а не пользователь, который выбирает из какой консоли запускать прогу и может ошибиться, если будет часто переключаться.

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

> такие пользователи всё равно имеют физический доступ к компу и могут сделать init=/bin/sh

Тем, кто знает о том как это делается, не страшны любые ограничения.

если полный доступ к $HOME будут иметь не все программы, как сейчас, а только те которым нужно, такие как файл-менеджеры


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

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

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

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

>А я хочу сохранить страничку/картинку открытую в FF в каталог ~/foo, что мне делать?

Ввести пароль в появившемся окне UAC же

Gary ★★★★★ ()
Ответ на: tl;dr от Deleted

Re: tl;dr

> tl;dr
Это что?

Ты хочешь изобрести SELinux?

Да... Почти, но как-то попроще чтоб было... Всё-таки SElinux тоже не для этого.

Xenius ★★★★★ ()
Ответ на: Re: tl;dr от Xenius

Re: tl;dr

>Это что?

Too long; didn't read :}

Deleted ()
Ответ на: Re: tl;dr от Xenius

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

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

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

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

> И не надо плодить сущностей.

Тогда уж это SELinux - лишняя сущность :)

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

>> такие пользователи всё равно имеют физический доступ к компу и могут сделать init=/bin/sh

Тем, кто знает о том как это делается, не страшны любые ограничения.

О чем и говорю. Так что защита от программ нужна, а не разделение прав между пользователями, которое всё равно не работает (хотя я не против чтоб была и мультиюзерность и мультипрограммность, но как тогда сделать чтоб firefox запещенный от пользователя X мог писать только в ~X/.firefox + добавлять файлы в директории типа ~/music и ~/downloads (хотя опять же желательно чтоб сам фокс качал все файлы в одно место а после докачки другая прога раскидывала их по директориям, чтоб злоумышленник через взломанный фокс не мог потереть файлы скачанные (и полность докачанные) самим фоксом))

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

Создатель дистрибутива, но так чтоб пользователь мог всё поменять. Если сам программу пишешь, то должна быть возможность задать ей автоматом нужные права после компиляции (например, занести все исполнимые файлы из ~/projects/filemanagers в список доверенных)

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

> Понимате какой фокус, файло оно общее зачастую, там музыка, семейное фото в семйках, фильмы и т.п. даже у вендузяток оно лежит на шарах. А тестовый аккаунт нужен только гикам. Как итог автоматизировать то нечего
Да, право на чтение всем прогам (кроме директорий с проном или секретными доками) кроме сомнительных игр скачанных с левых сайтов
Права на изменение всяким сортировщикам фоток типа f-spot, digi-cam, граф-редакторам и файл-менеджерам.
Автоматизировать что-то нужно... Чтоб можно было без труда скачать игрушку с левого сайта и запустить и она заработала, но ничего похерить не могла и даже не могла отослать ничего в интернет, если это не сетевая игра

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

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

wfrr ★★☆ ()

>Мы ведь хотим, чтоб случайно скачанная с интернета игрушка на питоне просто работала и в неё можно было спокойно играть, даже если автор спрятал где-то в Makefile rm -rf /
Поэтому мы регулярно бэкапимся.
/thread

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

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

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

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

Xenius ★★★★★ ()

Хочу я всего лишь чтоб пользователь контролировал программы, а не наоборот

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

Xenius ★★★★★ ()

Ты еще забыл про chroot, скорее наверни его в свое эссе.

sdio ★★★★★ ()

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

Да и реализовать это не трудно, всего лишь надо выставить права.

melkor217 ★★★★★ ()

>Но сейчас компьютеры с линуксом используются в основном в совсем другой ситуации — пользователь только один, который имеет над ней полный контроль.

Программы запускаются под рутом

Пример: firefox запускается под пользователем firefox, который имеет право записи только в $HOME/.firefox и всё

(«глубокомысленные» «выводы» - поскипаны)

Школота - такая школота...

Я знаю, что существуют всякие SElinux и apparmor

А ещё - Tomoyo. Но хрен ты что-то знаешь про «SElinux и apparmor», потому как «где-то что-то слышал» != «знаю»

В общем - даже на первокурсника ты не тянешь :(

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

>и что толку, все равно эта красавица готовится отправиться на свалку истории

А ограничение маргинальности оси в топике не озвучены. А как концепт - подходит.

theos ★★★ ()

Причем здесь школьники и первокурсники? Речь о совсем другом идет же.

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

>Причем здесь школьники и первокурсники? Речь о совсем другом идет же.

У тебя идиотские выводы из-за изначально неверных предпосылок.

Led ★★★☆☆ ()

И что ж в моих выводах неправильно? GNU/Linux по умолчанию изолирует пользоватей друг от друга, а программы могут влиять одна на другую неограниченно. Я предложил сделать директорию вида $HOME/.prog доступной только prog (и не только)

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

>А зачем тогда разделение прав вообще, почему бы не работать всегда от рута?
Чтобы никто не прочитал /etc/shadow и не сломал твой пароль?

А почему бы не сделать чтоб при выборе файла в диалоге открытия, программе автоматически давалось право на его чтение, а при выборе файла в диалоге сохранения — на запись?

Потому что этих диалогов в современных линуксах — десяток. И ни один из них не системный.
Кстати, покажи мне диалог сохранения файлов в моём любимом mutt и скажи где там система будет давать какие-то права.
А заодно объясни что помешает зловредной софтине юзать нечто типа xdotool и ставить галочки за пользователя.
И вообще, гуй в управлении системой (а тем более безопасностью) далеко не все любят.

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

>просто три пользователя 8)



Софтины для записи файлов юзаешь через su - files? Не геморно?

ShTH ()

>Вопрос: есть ли ОС или дистрибутивы, сделанные так чтоб ограничивать не пользователя, а конкретные программы?

Есть:

  • большинство реализаций J2ME в мобильных телефонах;
  • уровни интеграции процессов в UAC в современных Windows;
  • same origin policy в веб-браузере, если его рассматривать как платформу для запуска приложений.
anonymfus ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.