1

Тема: Ефективність прав у лінукс

Доброго дня панове, задали питання, довго мучаюсь з ним. Був би дуже вдячний за відповідь, пробував багато варіантів!
Є каталог з правами rwx, у ньому є файл з правами r-x. Питання: чому можна видалити файл, якщо на самому файлі немає прав w, а є лише на каталог? Чому тут не відбувається порушення принципів ефективності прав? (Копати потрібно в бік ефективності прав)

2

Re: Ефективність прав у лінукс

Looser написав:

Доброго дня панове, задали питання, довго мучаюсь з ним. Був би дуже вдячний за відповідь, пробував багато варіантів!
Є каталог з правами rwx, у ньому є файл з правами r-x. Питання: чому можна видалити файл, якщо на самому файлі немає прав w, а є лише на каталог? Чому тут не відбувається порушення принципів ефективності прав? (Копати потрібно в бік ефективності прав)

"ефективності прав" ??? де ви таке формулювання знайшли?

Може бо видалення файлу з каталогу то операція запису відносно каталогу а не файлу?

Подякували: leofun011

3

Re: Ефективність прав у лінукс

Ні, не те, відповідав так(

4

Re: Ефективність прав у лінукс

Looser написав:

Ні, не те, відповідав так

Відповідав кому ? хто зказав "Ні, не те" ?

Looser написав:

Ефективність прав

Не знаю такого.

5

Re: Ефективність прав у лінукс

при видаленні файлу запис в файл не відбувається, тому конфлікту нема

Подякували: leofun011

6

Re: Ефективність прав у лінукс

Це ви фактичні права доступу (effective permissions) так переклали?
Для видалення файла треба внести зміни у каталог, що його містить, а у нього самого не треба. Тому порушення немає.

Подякували: bebyk1

7 Востаннє редагувалося P.Y. (11.06.2023 15:47:35)

Re: Ефективність прав у лінукс

Чекайте, а коли файл, у який не можна було писати, вже видалено, то чи не можна створити файл з таким же іменем у тому ж місці і записати туди якісь дані, щоб підмінити вміст файлу, захищеного від запису?

8 Востаннє редагувалося ur_naz (11.06.2023 21:32:10)

Re: Ефективність прав у лінукс

це вже буде інший файл

Подякували: koala, leofun012

9

Re: Ефективність прав у лінукс

Так, якщо ви створили жорстке посилання на файл, то створення нового файлу з тим самим іменем не змінить оригінал.

Подякували: leofun011

10 Востаннє редагувалося HetmanNet (12.06.2023 18:22:41)

Re: Ефективність прав у лінукс

P.Y. написав:

Чекайте, а коли файл, у який не можна було писати, вже видалено, то чи не можна створити файл з таким же іменем у тому ж місці і записати туди якісь дані, щоб підмінити вміст файлу, захищеного від запису?

Можна створити новий файл з тим самим ім'ям що було у файлу який було видалено перед тим.

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

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

Подякували: flatliner, leofun012

11

Re: Ефективність прав у лінукс

Уявімо, в мене є скрипт, який читає якісь дані з файлу, захищеного від запису (але не від видалення), як було описано вище. Як він має звертатися до цього файлу, щоб гарантовано читати його, а не підміну з тим же іменем?

12

Re: Ефективність прав у лінукс

P.Y. написав:

Уявімо, в мене є скрипт, який читає якісь дані з файлу, захищеного від запису (але не від видалення), як було описано вище. Як він має звертатися до цього файлу, щоб гарантовано читати його, а не підміну з тим же іменем?

Якщо файл будете лише читати то вам треба тоді використовувати формати файлів з цифровим підписом (який перевірятимете вже у скрипті) чи окремо накладати цифрові підписи, бо в усіх інших випадках того гарантувати не можна якщо користувач буде мати достатньо прав щоб здійснити підміну файлу. Наприклад, у вас є conf.xml файл налаштувань, ви можете підписати даний файл ключем пара від якого вшита в скрипт, та відбиток зберегти в conf.xml.sign, при запуску скрипта той має обов'язково перевірити наявність підпису та відповідність вмісту до підпису і лиш тоді вичитувати вміст conf.xml для своєї роботи.

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

Подякували: P.Y., leofun012

13

Re: Ефективність прав у лінукс

У варіанті з підписом, очевидно, критично важливим є захист від підміни лише підпису, як і самого скрипта, а файл налаштувань може бути й зовсім без обмежень прав (які все одно можна обійти, але підміну все одно буде виявлено, якщо тільки криптоалгоритм не виявиться недостатньо надійним)?

14

Re: Ефективність прав у лінукс

P.Y. написав:

Уявімо, в мене є скрипт, який читає якісь дані з файлу, захищеного від запису (але не від видалення), як було описано вище. Як він має звертатися до цього файлу, щоб гарантовано читати його, а не підміну з тим же іменем?

Ніяких гарантій. Середовище належить користувачу і він може замінити все що хоче (відповідно до встановлених прав). А скріпт має працювати з тим що подадуть.
Якщо вже дуже хочеш перевіряти оригінальність файла, то можна в скріпті перевіряти хеш файла [і підпис (як описав HetmanNet)]. Але такі перевірки зазвичай використовують тільки для файлів, які скріпт тягне з мережі.

Подякували: P.Y.1

15

Re: Ефективність прав у лінукс

P.Y. написав:

Уявімо, в мене є скрипт, який читає якісь дані з файлу, захищеного від запису (але не від видалення), як було описано вище. Як він має звертатися до цього файлу, щоб гарантовано читати його, а не підміну з тим же іменем?

Створити жорстке посилання на цей файл і читати з нього.

Подякували: P.Y.1

16

Re: Ефективність прав у лінукс

P.Y. написав:

У варіанті з підписом, очевидно, критично важливим є захист від підміни лише підпису, як і самого скрипта, а файл налаштувань може бути й зовсім без обмежень прав (які все одно можна обійти, але підміну все одно буде виявлено, якщо тільки криптоалгоритм не виявиться недостатньо надійним)?

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

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

Для прикладу, як функціонують системи ЕЦП: є наприклад мін'юст, у якого є кореневий сервер який той береже і на ньому підпис, яким він підписує сертифікати підписів центрів сертифікації, які в свою чергу підписують підписи вашої організації. То поки можна довіряти мін'юсту ви можете довіряти всьому ланцюгу і маючи лише вбудованим в софт пару до підпису мін'юста ви можете перевірити весь ланцюг: у центра сертифікації взявши сертифікат на підпис що перевіряєте та перевірити що він виданий ним, взявши вбудований сертифікат мін'юста перевірити підпис яким підписує центр сертифікації сертифікати на підписи що видає. Але якщо підпис мін'юста скомпроментований то скомпрометований весь ланцюг.

Ще один приклад, принцип Secure Boot. Є в uefi/bios вбудований сертифікат виробника процесора, яким той перевіряє сертифікат до підпису розробника award (чи іншого розробника uefi/bios) яким перевіряється цілісність bios/uefi якщо підпис справній, за допомогою сертифікату award перевіряється підпис розробника MS (чи іншої ОС) яким підписано заванажувач ОС і відповідно перевіряє цілісність завантажувача якщо підпис дійсний, за допомогою сертифікату підпису MS перевіряється підпис релізу ОС і якщо той дійсний перевіряється цілісність ядра та інших захищених компонентів включно зі сховищем сертифікатів підписів за допомогою яких перевіряються підписи вендорів (розробників драйверів) та розробників програмного забезпечення які потрібні для перевірки цілісность їх та якщо треба наступні рівні підписів якими можуть бути захищенні деякі компоненти.

17

Re: Ефективність прав у лінукс

leofun01 написав:

Якщо вже дуже хочеш перевіряти оригінальність файла, то можна в скріпті перевіряти хеш файла [і підпис (як описав HetmanNet)]. Але такі перевірки зазвичай використовують тільки для файлів, які скріпт тягне з мережі.

І зазвичай при встановленні програмного забезпечення.