Чому немає дозволів, як Android чи iOS?


26

Коли я встановлюю таку програму, як GIMP або LibreOffice в Linux, мене ніколи не запитують про дозволи. Встановлюючи програму на Ubuntu, я явно даю цій програмі повний дозвіл на читання / запис у будь-якому місці мого диска та повний доступ до Інтернету?

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

Мені цікаво лише, якщо це технічно можливо, а не, якщо це ймовірно чи ні. Звичайно, я знаю, що це мало ймовірно.


26
Обов’язковий XKCD: xkcd.com/1200
Андреа Лаццаротто

10
Оскільки модель безпеки Linux датується раніше, ніж хтось думав про це. Насправді це датується до Інтернету - коли найбільшою загрозою були інші люди, які користуються тим же комп’ютером.
користувач253751

2
Частково тому, що дуже багато людей, які використовують * nix, не «встановлюють» програми, вони або компілюють їх з джерела, або записують їх самі. Тож уявіть, якби вам довелося пройти ригамаролу "дозволів" для кожного написаного вами простого маленького сценарію оболонки: чи не буде це масовою тратою часу?
jamesqf

4
Я не купую цей рядок міркувань, хоча "код є відкритим кодом, ви можете переглянути його і скласти самостійно!". Усі ці твердження є правдивими, але це не означає, що я зможу переглянути кожен рядок коду, який я запускаю, і навіть якби я це зробив, чи зробила команда людей, або весь світ, це ні в якому разі не означає ви помітите зловмисний чи поганий код, який негативно впливає на ваш комп’ютер. Але дякую за внесок, я бачу, як це може стати головним болем, і я зараз відкрив шляхи його вирішення.
stackinator

Відповіді:


31

Тут є дві речі:

  • при встановленні програми звичайними засобами (інсталятор системи, наприклад apt / apt-get на Ubuntu), вона зазвичай встановлюється в деякому каталозі, де вона доступна всім користувачам (/ usr / bin ...). Цей каталог вимагає запису привілеїв, щоб вам потрібні спеціальні привілеї під час встановлення.

  • коли ви використовуєте програму, вона працює з вашим ідентифікатором користувача і може читати чи писати лише там, де програмам, виконаним з вашим ідентифікатором, дозволено читати чи писати. У випадку з Gimp ви побачите, наприклад, що ви не можете редагувати стандартні ресурси, такі як кисті, оскільки вони є загальними, /usr/share/gimp/і вам потрібно спершу скопіювати їх. Це також показує, Edit>Preferences>Foldersде більшість папок припадає на пари, система, яка є лише для читання, і користувацька, до якої можна записати.


17
Після того, як програма встановлена, спосіб її встановлення стає неактуальним. Єдине, що враховує, це те, під яким користувачем він запускається (іншими словами, хто ним користується). Тоді він передбачає ті ж права доступу, що і всі інші програми, які виконуються тим самим користувачем.
xenoid

3
@xenoid Якщо програма не встановлена ​​власністю root та з встановленим бітом. У цьому випадку програма працює як root, незважаючи на те, що її використовує хтось інший.
Monty Harder

2
Так, усі 18: mount / umount / ping / sudo ...
xenoid

2
@xenoid, я думаю, що тут важливим є те, що при встановленні пакета явно не просимо дозволу на встановлення встановленого бінарного файлу. Натомість все, що є в пакеті, встановлюється, і вам просто доведеться «знати» іншим способом, якщо є додаткові програми. Ви повністю покладаєтесь на пакувач, щоб переконатися, що пакет відповідає документації та в іншому випадку є безпечним тощо. Утиліта менеджера пакунків не робить нічого, щоб допомогти вам там.
ilkkachu

3
Так, нічого нового, ось чому є сховища ... Навіть без встановленого біта та встановленого програмного забезпечення можна зробити безліч інших неприємних речей, таких як rm -rf ~/. Якщо ви встановлюєте з інших джерел, вам слід бути обережними (або встановлювати з джерела, після перевірки коду).
ксеноїд

23

Встановлюючи програму на Ubuntu, я явно даю цій програмі повний дозвіл на читання / запис у будь-якому місці мого диска та повний доступ до Інтернету?

Так, якщо ви використовуєте sudoабо подібний еквівалент, ви даєте інсталятору повний дозвіл на читання / запис у будь-якому місці диска. Це здебільшого те саме. Існує також прапор, який інсталятор може встановити, який називається setuid, завдяки чому програма матиме повні дозволи після встановлення.

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

Чому немає дозволів, як Android чи iOS?

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

Сьогодні вона досить застаріла. Android базується на Linux, але він працює, створюючи окремий "обліковий запис користувача" для кожного додатку, а не для кожного користувача. Я не знаю, що використовує iOS. Намагання, такі як Flatpak, зараз намагаються перенести такий самий предмет на робочий стіл Linux.


2
Це фактично один аргумент для запуску потенційно використовуваного коду як окремого непривілейованого користувача та сподіваючись, що в ОС не існує вразливості ескалації привілеїв. Або Докер.
Willtech

@immibis Android використовує ядро ​​Linux та ext FS. Він не поділяє жодних інших подібностей afaik. Не зв'язуйте Linux та UNIX-подібні (або GNU / Linux). (Принаймні, ви не називали FreeBSD "Linux" ..)
wizzwizz4

1
@ wizzwizz4 Linux - це ядро, Android використовує ядро ​​під назвою Linux, я не впевнений, у чому справа.
користувач253751

@Willtech Це технічно працює як міра безпеки, але це досить незручно. Як правило, ви хочете, щоб програми мали доступ до ваших файлів. Але отримати доступ лише до тих файлів, які ви їм сказали.
користувач253751

@immibis Дозволи не реалізовані в ядрі, тому вводити в оману означає, що Android базується на системі, що включає модель дозволів. (IIirc ядро ​​виконує деякі дозволи, хоча ..)
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 (деталі див. В Manpages для запуску flatpak та overpakide flatpak). Обробка дозволів додатків наразі дещо прихована в інтерфейсі, але довгостроковий план полягає в тому, щоб показати дозволи під час встановлення та полегшити їх перегляд.

Я також не використовував альтернативу Ubuntu, Snappy, щоб знати, чи вона надає таку функцію, видиму в графічному інтерфейсі.


Чи дозволено читання / запис дозволу на Flatpaks в мою домашню папку в Ubuntu?
stackinator

1
Читаючи посилання, це виглядає так: а) у них є елегантне рішення на увазі, коли програми отримують доступ лише до тих файлів, які користувач обрав у вікні відкриття / збереження файлу тощо. Б) за замовчуванням було надання повного доступу до домашнього каталогу .
sourcejedi

2
Веб-додатки - це набагато більш стандартне рішення цієї проблеми, хоча і прикро неефективно у багатьох випадках. Будь-який популярний веб-браузер - це дуже універсальна та ретельно перевірена пісочна скринька.
судо

6

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

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

Існують сканери рекламного ПЗ (тобто adaware або Spybot D&D), які б класифікували поведінку, як підключення facebook, Google аналітики та рекламних мереж як зловмисне програмне забезпечення на ПК. Мобільна екосистема - це як ціла перезавантаження комп'ютерів, коли мова йде про ці речі. Кожен постачає рекламне програмне забезпечення, просто тому, що це легко і додає аналітики, просто тому, що він цікавий. Побічні ефекти - зниження конфіденційності та безпеки. Частина безпеки припадає на модель пісочниці, частина конфіденційності все ще залишається відкритою проблемою.

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

Сьогодні ми бачимо спроби використовувати пісочницю в нових форматах пакетів, таких як оснащення та 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 років.


3

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

Ці програми встановлюються у привілейованій частині файлової системи, до якої ви та більшість користувачів зазвичай не маєте доступу.

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

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

Встановлюючи програму на Ubuntu, я явно даю цій програмі повний дозвіл на читання / запис у будь-якому місці мого диска та повний доступ до Інтернету?

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

Модель безпеки в Linux полягає в тому, що ваш обліковий запис користувача має певні права, а групи, до яких належить ваш обліковий запис, мають певні права. Право на будь-яку частину файлової системи вимагає кореневих привілеїв, які зазвичай не надаються користувачам. Навіть використовуючи судо, ви не отримуєте всіх прав.

Звичайні облікові записи користувачів зазвичай мають доступ до ресурсів, які, як очікується, знадобляться, наприклад, до Інтернету.

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

Будь-який каталог або файл, до якого ви як користувач маєте права доступу, може отримати доступ до програми, яку ви запускаєте, оскільки вона зазвичай успадковує ваші права. Користувач, який зазвичай входить у систему, за замовчуванням зазвичай не має права змінювати більшість критичних системних файлів або спільних файлів.

Мені цікаво лише, якщо це технічно можливо, а не, якщо це ймовірно чи ні. Звичайно, я знаю, що це мало ймовірно.

Майте на увазі, що більшість користувачів зазвичай встановлюють додатки із сховищ, які добре захищені, і ризик ворожої коду низький.

Я, мабуть, запропонував би додаткове читання, щоб познайомитися з дозволами Linux.

Модель безпеки Android розвивається так, щоб відповідати потребам користувачів, які не тільки взагалі нічого не розуміють щодо основної моделі безпеки ОС, але навряд чи розуміють щось про комп'ютери.

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

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


2

Встановлюючи деякі програми, ви зможете встановити їх у власному просторі користувачів (тобто, міститься у вашому домашньому каталозі), а не на всій системі. Таким чином, вам не просять привілеїв суперпользователя, оскільки вони вам не потрібні для установки програми для власного користування. Програма, встановлена ​​таким чином, дійсно не змогла б отримати доступ до файлів, яким не надано дозвіл "невласник, який не є власником групи, може прочитати цей" дозвіл при відсутності ескалації привілеїв.


Якщо програма встановлена ​​в моєму домашньому каталозі, чи може вона читати і писати в будь-якому місці домашнього каталогу?
stackinator

2
Він працює з вашими дозволами, тому він може отримати доступ до всього, до чого ви можете отримати доступ.
DopeGhoti

1
На одній користувальницькій машині доступ лише для користувачів не є більш безпечним, ніж кореневий доступ. У будь-якому випадку, все важливе, можливо, доступне вашому користувачеві.
судо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.