Почему нет разрешений, таких как Android или iOS?

26

Когда я устанавливаю такую ​​программу, как GIMP или LibreOffice в Linux, меня никогда не спрашивают о разрешениях. Устанавливая программу в Ubuntu, даю ли я ей полное разрешение на чтение / запись в любом месте на моем диске и полный доступ к Интернету?

Теоретически, может ли GIMP считывать или удалять любые каталоги на моем диске, не требуя пароля типа sudo?

Мне только любопытно, технически ли это возможно, а не так, вероятно или нет. Конечно, я знаю, что это маловероятно.

stackinator
источник
26
Обязательный XKCD: xkcd.com/1200
Андреа
10
Потому что модель безопасности Linux берет свое начало еще до того, как кто-то задумался об этом На самом деле, это было еще до появления Интернета - когда вашей самой большой угрозой были другие люди, использующие тот же компьютер.
user253751
2
Частично потому, что многие люди, использующие * nix, не «устанавливают» программы, они либо компилируют их из исходного кода, либо пишут сами. Так что представьте себе, если бы вам приходилось проходить через ригамаролу «права доступа» для каждого простого маленького сценария оболочки, который вы написали: не будет ли это огромной тратой времени?
jamesqf
4
Я не покупаю эту линию рассуждений: «Код с открытым исходным кодом, вы можете просмотреть его и скомпилировать самостоятельно!». Все эти утверждения верны, но это не значит, что я смогу пересмотреть каждую строчку кода, которую я запускаю, и даже если я это сделал, или команда людей, или весь мир, это никоим образом не означает вы обнаружите вредоносный или плохой код, который негативно повлияет на ваш компьютер. Но спасибо за вклад, я вижу, как это может стать серьезной болью, и теперь я нашел способы обойти это.
стекинатор

Ответы:

31

Здесь есть две вещи:

  • Когда вы устанавливаете программу стандартными средствами (системный установщик, такой как apt / apt-get в Ubuntu), она обычно устанавливается в какой-то каталог, где она доступна всем пользователям (/ usr / bin ...). Для этого каталога требуются права доступа для записи, поэтому вам нужны особые права во время установки.

  • когда вы используете программу, она запускается с вашим идентификатором пользователя и может читать или писать только тогда, когда программы, выполненные с вашим идентификатором, могут читать или записывать. В случае с Gimp вы обнаружите, например, что вы не можете редактировать стандартные ресурсы, такие как кисти, потому что они находятся в общем ресурсе, /usr/share/gimp/и что вы должны сначала скопировать их. Это также показывает, Edit>Preferences>Foldersгде большинство папок попарно: системная, доступная только для чтения, и пользовательская, в которую можно записывать.

xenoid
источник
17
Как только программа установлена, то, как она была установлена, становится неактуальным. Единственное, что учитывается, это то, под каким идентификатором пользователя он запускается ((другими словами, кто его использует). Затем он принимает те же права доступа, что и все другие программы, запускаемые одним и тем же пользователем.
xenoid
3
@xenoid Если не установлена ​​программа, принадлежащая пользователю root и с битом setuid. В этом случае программа запускается с правами root, несмотря на то, что она используется кем-то другим.
Монти Хардер
2
Да, все 18 из них: mount / umount / ping / sudo ...
xenoid
2
@xenoid, я думаю, что важным моментом является то, что при установке пакета явно не запрашивается разрешение на установку двоичного файла setuid. Вместо этого, все, что находится в пакете, будет установлено, и вам просто нужно «узнать» каким-то другим способом, если задействованы привилегированные программы. Вы полностью зависите от упаковщика, чтобы убедиться, что пакет соответствует документации и, в противном случае, безопасен и т. Д., Утилита менеджера пакетов не поможет вам в этом.
ilkkachu
3
Да, так что ничего нового, вот почему есть репозитории ... Даже без бита setuid и установленного программного обеспечения можно сделать много других неприятных вещей, таких как rm -rf ~/. Если вы устанавливаете из других источников, вы должны быть осторожны (или устанавливать из исходного кода после проверки кода).
ксеноид
23

Устанавливая программу в Ubuntu, даю ли я ей полное разрешение на чтение / запись в любом месте на моем диске и полный доступ к Интернету?

Да, если вы используете sudoили эквивалент, вы даете установщику полное разрешение на чтение / запись в любом месте на вашем диске. Это в основном одно и то же. Существует также флаг, который может установить установщик, называемый setuid, который дает программе полные права и после установки.

Даже если мы игнорируем установщик и если программа не имеет setuid (очень редко программы используют setuid), когда вы запускаете программу, она имеет полный доступ ко всему, что может получить доступ к вашей учетной записи. Например, если вы вошли в свой онлайн-банк, он может гипотетически отправить все ваши средства в Нигерию.

Почему нет разрешений, таких как Android или iOS?

Модель безопасности - это означает, как спроектирована система безопасности - в Linux очень старая. Он унаследован от Unix, который восходит к 1960-м годам. В то время не было Интернета, и большинство людей в отделе использовали один и тот же компьютер. Большинство ваших программ пришли из крупных компаний, которым доверяют. Таким образом, система безопасности была разработана для защиты пользователей друг от друга, а не для защиты пользователей от программ, которые они запускают.

В настоящее время это довольно устарело. Android основан на Linux, но он работает, создавая отдельную «учетную запись пользователя» для каждого приложения, а не для каждого пользователя. Я не знаю, что использует iOS. Усилия, подобные Flatpak, в настоящее время пытаются принести то же самое на рабочий стол Linux.

user253751
источник
2
Фактически это один из аргументов для запуска потенциально эксплуатируемого кода в качестве отдельного непривилегированного пользователя и надежды, что в ОС нет уязвимости, связанной с повышением привилегий. Или Докер.
Willtech
@immibis Android использует ядро ​​Linux и ext FS. Это не разделяет никаких других сходств. Не путайте Linux и UNIX-подобные (или GNU / Linux). (По крайней мере, вы не называли FreeBSD "Linux" ..)
wizzwizz4
1
@ wizzwizz4 Linux - это ядро, Android использует ядро ​​под названием Linux, я не уверен, в чем ваша точка зрения.
user253751
@Willtech Технически это работает как мера безопасности, но это довольно неудобно. Как правило, вы хотите, чтобы приложения имели доступ к вашим файлам. Но только файлы, которые вы сказали им доступ.
user253751
@immibis Разрешения не реализованы в ядре, поэтому вводить в заблуждение подразумевать, что Android основан на системе, которая включает модель разрешений. (Хотя ядро ​​применяет некоторые разрешения ...)
wizzwizz4
9

То, что вы хотите, предоставляется приложениями Flatpack. Они очень похожи на приложения для iOS, Android или Windows Store.

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

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

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

По умолчанию после установки приложение получает все запрошенные разрешения. Однако вы можете переопределять разрешения при каждом вызове flatpak run или глобально для каждого приложения с помощью переопределения flatpak (подробности см. В man-страницах для flatpak-run и flatpak-override). Обработка разрешений приложения в настоящее время несколько скрыта в интерфейсе, но в долгосрочной перспективе планируется показать разрешения во время установки и упростить их переопределение.

Я также не использовал альтернативу Ubuntu, Snappy, чтобы узнать, предоставляет ли она такую ​​функцию, видимую в GUI.

sourcejedi
источник
Есть ли у flatpaks права на чтение / запись в мою домашнюю папку в Ubuntu?
стекинатор
1
Читая ссылку, это выглядит так: а) у них есть элегантное решение, когда приложения получают доступ только к файлам, которые пользователь выбрал в окне открытия / сохранения файлов и т. Д., Б) по умолчанию было предоставлено полное право доступа к вашему домашнему каталогу. ,
sourcejedi
2
Веб-приложения являются гораздо более стандартным решением этой проблемы, хотя во многих случаях это раздражающе неэффективно. Любой популярный веб-браузер - это универсальная и тщательно протестированная песочница.
Судо
6

Это технически возможно и решения включают в себя apparmor, selinuxи firejailили даже полные контейнерах нравятся LXCили полная виртуальная машина (например VirtualBox, kvmили vmware). Для работы в сети есть opensnitchклон littlesnitchпрограммы из OSX.

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

Существуют сканеры для рекламного ПО (т.е. adaware или Spybot D & D), которые классифицируют поведение, как подключение Facebook, аналитики Google и рекламных сетей, как вредоносные программы на ПК. Когда дело доходит до этих вещей, мобильная экосистема похожа на полную перезагрузку компьютеров. Каждый связывает рекламное ПО только потому, что это легко и добавляет аналитику, просто потому, что ему любопытно. Побочными эффектами являются снижение конфиденциальности и безопасности. Часть безопасности учитывается моделью песочницы, часть конфиденциальности все еще остается открытой проблемой.

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

Сегодня мы видим попытки использовать «песочницу» в новых форматах пакетов, таких как snap и flatpak, и браузеры также используют ее для своих расширений. Chromium использует модель разрешений с момента запуска, а Firefox использует ее для всех расширений (поскольку 57 - только те расширения, которые вы можете установить). Это вполне разумно, потому что люди устанавливают расширения браузера от неизвестных авторов точно так же, как приложения от людей, о которых они никогда не слышали, думая, что они не более опасны, чем веб-сайт, который они посещают, что является фатальным заблуждением, когда нет песочницы для их защиты.

алло
источник
4

Android использует «рыночную» модель безопасности: разные приложения поставляются разными (полу доверенными) поставщиками и должны быть изолированы от защищенных ресурсов и друг от друга. Большинство приложений распространяются на коммерческой основе: они продаются (платное ПО), показывают платную рекламу или «монетизируют» своих пользователей, продавая свои данные третьим сторонам. Существует высокая мотивация заниматься незаконным доступом к данным, даже если они были пойманы.

Большинство приложений в Debian, Red Hat и аналогичных «классических» дистрибутивах Linux распространяются в исходной форме: после того, как приложения с открытым исходным кодом набирают достаточную популярность, они выбираются вручную для включения сопровождающими. Маловероятно, чтобы осуществлять незаконный доступ к данным, - потенциальные выгоды не оправдывают усилий.

Стоит отметить, что усовершенствованная модель безопасности Android является одной из причин, почему она приобрела такую ​​большую популярность, легко преодолевая iOS на мобильных рынках. Современные настольные дистрибутивы Linux не просто «разные», они на самом деле сильно отстают от времени с точки зрения своих моделей безопасности и распространения.

Некоторые дистрибутивы Linux предлагают усовершенствования своей системы распространения программного обеспечения: централизованные сторонние репозитории программного обеспечения (AUR), специализированные форматы пакетов для распространения стороннего программного обеспечения (AppImage, Snappy, Flatpack), системы вторичного репозитория (Docker). К сожалению, эти улучшения со временем приобретают очень малую популярность: AppImage был изобретен в 2004 году, первая версия AUR была выпущена в 2005 году, но ни один из современных дистрибутивов Linux официально не утвердил свои функции после> 10 лет.

user1643723
источник
3

Когда я устанавливаю такую ​​программу, как GIMP или LibreOffice в Linux, меня никогда не спрашивают о разрешениях.

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

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

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

Устанавливая программу в Ubuntu, даю ли я ей полное разрешение на чтение / запись в любом месте на моем диске и полный доступ к Интернету?

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

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

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

Теоретически, может ли GIMP считывать или удалять любые каталоги на моем диске, не требуя пароля типа sudo?

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

Мне только любопытно, технически ли это возможно, а не так, вероятно или нет. Конечно, я знаю, что это маловероятно.

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

Я бы, вероятно, предложил дополнительное чтение, чтобы разобраться с разрешениями Linux.

Модель безопасности Android развивается, чтобы соответствовать потребностям пользователей, которые не только вообще ничего не понимают в базовой модели безопасности ОС, но и почти ничего не понимают в компьютерах.

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

Я думаю, что с точки зрения пользователя это лучше всего описать как разницу между полностью автоматическим и полуавтоматическим или ручным управлением. Современные потребители хотят полноценного авто. В Linux есть полуавтоматический и ручной режим. Большинству пользователей Linux в наши дни не нужно знать о модели безопасности, но контроль есть, если вам это нужно или нужно.

StephenG
источник
2

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

DopeGhoti
источник
Если программа установлена ​​в моем домашнем каталоге, может ли она читать и записывать в любом месте домашнего каталога?
стекинатор
2
Он работает с вашими разрешениями, поэтому он может получить доступ ко всему, что вы можете получить.
DopeGhoti
1
На однопользовательском компьютере доступ только для пользователя не намного безопаснее, чем доступ с правами root. В любом случае, все важное, вероятно, доступно вашему пользователю.
Судо