русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Права доступу до файлів в linux

Теоретичні відомості

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

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

У Linux, однак, не використовуються які завгодно властивості, а результат ідентифікації користувача - його UID. Кожен процес системи обов'язково належить якому-небудь користувачеві, і ідентифікатор користувача (UID) - обов'язкове властивість будь-якого процесу Linux. Коли програма login запускає стартовий командний інтерпретатор, вона приписує йому UID, отриманий в результаті діалогу. Всі процеси, запущені користувачем під час термінальної сесії, будуть мати його ідентифікатор.

Користувач може бути членом декількох груп, так само як і кілька користувачів можуть бути членами однієї і тієї ж групи. Історично склалося так, що одна з груп - група за замовчуванням - є для користувача основної: (коли не зовсім точно) говорять про «GID користувача», мають на увазі саме ідентифікатор групи за промовчанням. Користувач не може не бути членом як мінімум однієї групи, як снаряд не може не потрапити в епіцентр вибуху! Часто процедуру створення користувача проектують так, що ім'я групи за промовчанням збігається з вхідним назвою користувача, а GID користувача - з його UID. Однак це зовсім не обов'язково: не завжди потрібно заводити для користувача окрему групу, а якщо заводити, то не завжди вдається зробити так,щоб бажаний ідентифікатор групи збігався із бажаним ідентифікатором користувача.

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

У Linux існує виділений користувач системи, на якого не поширюються обмеження прав доступу - адміністратор (root). UID суперпользовательских процесів дорівнює 0: так система відрізняє їх від процесів інших користувачів. Саме адміністратор має можливість довільно змінювати власника і групу файлу. Йому відкритий доступ на читання та запис до будь-якого файлу системи і доступ на читання, запис і використання до будь-якого каталогу. Нарешті, суперпользовательский процес може на час змінити свій власний UID з нульового на будь-який інший. Серед облікових записів Linux завжди є запис по імені root («корінь»), що відповідає нульовому ідентифікатором, тому замість «адміністратор» часто говорять «root». Багато системних файлів належать root-безліч файлів тільки йому доступні на читання або запис. Пароль облікового запису - одна з найбільших коштовностей системи. Властивість root мати доступ до всіх ресурсів системи накладає дуже високі вимоги на людини, що знає пароль root. Root може все - у тому числі і всі поламати, тому будь-яку роботу варто вести з правами звичайного користувача, а до прав root вдаватися лише за потреби. Існує два різних способи отримати права суперкористувача.

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

Другий спосіб - це скористатися спеціальною утилітою su (shell of user), яка дозволяє виконати одну або кілька команд від імені іншого користувача. Відміну від попереднього способу - в тому, що завжди відомо, хто саме запускав su, а значить, з кого питати за наслідки.

У деяких випадках зручніше використовувати не su, а утиліту sudo, яка дозволяє виконувати тільки заздалегідь задані команди.

Утиліта id (див. man id) виводить вхідна ім'я користувача і відповідний йому UID, а також групу за замовчуванням і повний список груп, членом яких він є.

Вся інформація про користувачів і групи, зареєстрованих у систееме, зберігається у файлі /etc/passwd, /etc/shadow і /etc/groups

Таким чином, конкретний користувач по відношенню до його власних файлів виступає як власник (u - user).

У кожного файлу є ще і група (g - group), до якої належить власник файлу.

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

Можливі дії над файлом

Що можна робити з файлом після його створення? В першу чергу проглядати, пили читати (r) - read. ппо другу чергу, файл можна змінити (дописати, виправити, перейменувати, перемістити). пТаким чином, ми можемо говорити про можливість запису (w - write) у файл. пякщо файл є програмою, то його вміст являє собою команди для процесора, виконання яких призводить до того чи іншого бажаного (ми сподіваємося) ефекту. Іншими словами, деякі файли можна виконувати (x - execution).

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

Подання прав доступу

пОсновные атрибути прав доступу можна представити у вигляді дванадцяти бітів двійкового числа, рівних 1, якщо атрибут встановлений і 0, якщо немає. пПорядок бітів у числі наступний:

sU|sG|t|rU|wU|xU|rG|wG||xG|rO|wO|xO.

де sU - це SetUID, sG - це SetGID, t - t-атрибут (sticky-біт), після чого йдуть три трійки атрибутів доступу:

rU|wU|xU - права читання (Read), запису (Write) і виконання (eXecute) для власника файлу (User);

rG|wG|xG - права читання (Read), запису (Write) і виконання (eXecute) для групи файлу (Group);

rO|wO|xO - права читання (Read), запису (Write) і виконання (eXecute) для всіх інших (Other).

Процеси з встановленим бітом sU виконуються з правами власника. А з встановленим бітом sG - з правами групи.

У каталозі з встановленим sticky-бітом видаляти файли може тільки власник або root. При тому встановлювати цей біт може тільки root, па скидати може власник і root.

Наприклад, <команда samp>ls-l виводить права доступу в такому форматі:

«-rw-rw-rw-» (Перша риска - звичайний файл, і 9 прав доступу - всі можуть переглядати та змінювати)

«drwx------» (Каталог, повний доступ (читання, зміна, виконання) має тільки власник файлу)

«-rw-r-----» (Звичайний файл, власник може читати та змінювати група - читати, решта - не мають прав)

«drwxr xr---» (Каталог, власник має повний доступ, група - читання і виконання, інші - тільки читання)

«drwxrwxrwt» (Каталог, всі мають повний доступ, однак, встановлений sticky-біт, тому права запису в каталог пдля членів групи і для сторонніх обмежені їх власними файлами, і тільки власник має право змінювати перелік файлів у теці пяк йому заманеться. Такі каталоги називаються розділяються, тому що призначені вони, як правило, для спільної роботи всіх ппользователей в системі, обміну інформацією і т. п. При установці атрибуту «t» доступ на виконання для сторонніх («t» у рядку атрибутів стоїть на місці останнього «x») не скасовується. Просто вони рідко використовуються один без одного, пщо ls виводить їх в одному і тому ж місці. Якщо кому-небудь прийде в голову організувати спільне каталог без доступу стороннім пна використання, ls виведе на місці дев'ятого атрибуту не «t», «T».)

«-rws--x--x» (Звичайний файл, встановлений атрибут SetUID. Як і у випадку з t-атрибутом, ls виводить букву «s» замість букви «x» пв трійці «для власника». Точно так само, якщо відповідного x-атрибуту немає (що буває рідко), ls виведе «S» «s».)

«-rwx--s--x» (Звичайний файл, встановлений атрибут SetGID. Утиліта ls виводить SetGID у вигляді «s» «x» у другій трійці атрибутів («для групи»). Зауваження щодо «s», «S» і «x» дійсні пдля SetGID так же, як і для SetUID.)

права доступу подаються також двійковому і восьмиричном вигляді.

Наприклад:

Приклади запису прав доступу в двійковій формі 110 110 110 всі можуть переглядати та змінювати
111 100 000 власник має всі права, група - читання, інші не мають никкаких прав
001 111 100 000 встановлений t-атрибут, власник має всі права, група - читання, інші не мають никкаких прав
010 111 100 000 встановлено атрибут SetGID, власник має всі права, група - читання, інші не мають никкаких пра
100 111 100 000 встановлено атрибут SetUID, власник має всі права, група - читання, інші не мають никкаких прав
Приклади запису прав доступу в восьмиричной формі 666 всі можуть переглядати та змінювати
740 власник має всі права, група - читання, інші не мають никкаких прав
1740 встановлений t-атрибут, власник має всі права, група - читання, інші не мають никкаких прав
2740 встановлений атрибут SetGID, власник має всі права, група - читання, інші не мають никкаких пра
4740 встановлено атрибут SetUID, власник має всі права, група - читання, інші не мають никкаких прав

 

 

Особливості доступу до каталогів

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

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

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

Якщо каталог можна змінювати (w), то це означає, що в ньому можна змінювати файли, їх імена, видаляти їх. Небезпека! Це можна робити навіть з файлами, доступ до яких заборонений для даної категорії. Лікування! пВводят додатковий t-біт. При його наявності користувач може змінювати тільки свої файли.

Слід розуміти, що:

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

Зміна прав доступу

Зміна прав доступу до вказаного файлу або каталогу) виконується за допомогою команди chmod .

При створенні каталогу також можна відразу визначити права доступу до нього за допомогою команди mkdir-m.

Зміна власника і групи файлів виконується за допомогою команди chown . Групу також пожно пназначить командою chgrp .

Тим же побітовим поданням атрибутів регулюються та права доступу за умовчанням при створенні файлів і каталогів. пДелается це за допомогою команди umask. Єдиний параметр umask - вісімкове число, задаючий атрибути, які не треба пустанавливать нового файлу або каталогу. Так, umask 0 призведе до того, що файли будуть створюватися з атрибутами «rw-rw-rw-», па каталоги - «rwxrwxrwx». Команда umask 022 прибирає з атрибутів за замовчуванням права доступу на запис для всіх, пкроме господаря (виходить «rw-r--r--» і «rwxr-xr-x» відповідно), а з umask 077 пновые файли і каталоги стають для них повністю недоступні («rw-------» і «rwx------»).

Спеціальні атрибути файлів

У файловій системі Linux присутня підтримка додаткових прапорів або іншому "атрибутів" для файлів пв ядрах починаючи з серії 1.1. Файлова система в ядрах серій 2.2 і 2.4. дозволяє працювати з таким набором атрибутів:

-A Atime система не апдейтит atime(access time) для цього файлу.
-S Sync система фіксує всі зміни, що відбуваються в даному файлі на физическиом диску синхронно з додатком міняючим даний файл.
-a Append система дозволяє відкривати цей файл з метою його доповнення і не дозволяє ніяким процесам заміняти або усекать его.Если даний атрибут застосовується до директорії процес може створювати або змінювати файли в цій директорії , але не видаляти їх.
-i Immutable система забороняє будь-які зміни цього файлу. У разі директорії, процеси можуть модифікувати файли вже містяться в цій директорії, але не можуть видаляти файли або створювати нові.
-d No Dump програмі створює дампи дається вказівка ігнорувати цей файл під час створення backup.
-c Compress система застосовує прозору компресію для даного файлу. Тобто читання з нього дає вже декомпрессованые дані і попередньо перед записом на диск проводиться їх стиснення.
-s Secure Deletion видалення такого файлу супроводжується перезаписом блоків диска,на яких він розташовувався нулями.
-u Undelete коли програма запитує файл на видалення, система повинна зберегти блоки на диску, на яких розташований цей файл, щоб потім його можна було відновити.r

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

У таблиці нижче наведено відповідність, як різні версії ядра враховують кожен атрибут:

* дозволяє встановлювати прапор і враховує його значення

i дозволяє встановлювати прапор,але ігнорує його значення

- повністю ігнорує прапор

td>
1.0 1.2 2.0 2.2 2.4
A - - * * *
S * * * * *
a - * * * *
i - * * * *
d - * * * *
c i i i i i
s * * i i i
u i i i i i

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

пФлаг "A" або "atime" для певних файлів може дати деяку збільшення продуктивності, оскільки позбавляє систему піт необхідності апдейтить access time для цих файлів кожен раз, коли їх відкривають на читання.

пАтрибут "S" або "synchronous" надає новий рівень підтримки цілісності даних. Але оскільки всі зміни у файлах пнемедленно зберігаються на диску дещо знижується производиельность.

пОсновное увагу ми приділимо прапору "a" ("only append") і "i" ("immutable"), так як їх використання дає найбільш відчутні переваги пв плані забезпечення безпеки і цілісності файлової системи.

пРазличные open source BSD системи, такі як FreeBSD і OpenBSD, з деяких пір підтримують аналогічні прапори у своїх файлових системах (UFS і FFS відповідно) і частково рішення про реалізації аналогічних спецвозможностей в Linux ґрунтується на цьому позитивний досвід.

Зміна спеціальних атрибутів файлу виконується за допомогою команди chattr.

Перегляд спеціальних атрибутів файлу виконується за допомогою команди lsattr.

Детальну інформацію про файл або каталозі можна отримати за допомогою команди stat.

Змінити тимчасові мітки файлів або каталогів можна за допомогою команди touch.

Команди для роботи з користувачами і групами користувачів

# id # Показує зведену інформацію по поточному користувачу (логін, UID, GID, групи);
# finger User # Показати інформацію про користувача User;
# last # Показує останніх зареєстрованих користувачів;
# who # Показує ім'я поточного користувача і час входу;
# useradd Denis # Додавання нового користувача Denis;
# groupadd ITShaman # Додавання групи ITShaman;
# usermod-a-G ITShaman Denis # Додає користувача Denis в групу ITShaman (для Debian-подібних дистрибутивів);
# groupmod-A Denis ITShaman # Додає користувача Denis в групу ITShaman (SuSE);
# userdel Denis # Видалення користувача Denis;
# groupdel ITShaman # Видалення групи ITShaman.

Переглядів: 10327

Повернутися в зміст:ОС Linux




Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн