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

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

Користувачі та групи

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

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

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

З метою оптимального налаштування прав доступу для ряду програм-серверів в системі створені системні користувачі (облікові записи), від імені яких працюють ці програми. Наприклад, у системі ALT Linux веб-сервер (Apache) виконується від імені користувача apache, а ftp-сервер - від імені користувача ftp. Такі облікові записи не призначені для роботи людей-користувачів.

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

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

У деяких дистрибутивах Linux (в т. ч. в дистрибутивах ALT Linux) за допомогою груп можуть бути надані права, необхідні для виконання певних користувальницьких задач. Наприклад, щоб користувач отримав можливість збирати пакети RPM, його слід включити в групу rpm, щоб надати можливість запису дисків CD-R/RW, користувача потрібно включити в групу cdwriter і т. д.


Види прав доступу

Права доступу визначаються по відношенню до трьох типів дій: читання, запис і виконання. Ці права доступу можуть бути надані трьом класам користувачів: власнику файлу (користувачеві), групі, якій належить файл, а також всім іншим користувачам, що не входять в цю групу. Право на читання дає користувачеві можливість читати вміст файлу або, якщо такий доступ дозволений до каталогів, переглядати вміст каталогу (використовуючи команду ls). Право на запис дає користувачеві можливість записувати або змінювати файл, а право на запис для каталогу - можливість створювати нові файли або видаляти файли з цього каталогу. Нарешті, право на виконання дозволяє користувачеві запускати файл як програму або сценарій командної оболонки (зрозуміло, це дія має сенс лише в тому випадку, якщо файл є програмою або сценарієм). Для каталогів право на виконання має особливий сенс - воно дозволяє зробити даний каталог поточним, тобто "перейти" в нього, наприклад, командою cd.

Щоб отримати інформацію про права доступу, використовуйте команду ls з ключем -l. При цьому буде виведена детальна інформація про файли і каталогах, в якій будуть, серед іншого, відображені права доступу. Розглянемо наступний приклад:

/ Home / ivanov / docs # ls-l report1303
-rw-r - r - 1 ivanov users 505 Mar 13 19:05 report1303

Перше поле в цьому рядку (-rw-r - r -) відображає права доступу до файлу. Третє поле вказує на власника файлу (ivanov), четверте поле вказує на групу, яка володіє цим файлом (users). Останнє поле - це ім'я файлу (report1303). Інші поля описані в документації до команди ls. Даний файл є власністю користувача ivanov і групи users. Послідовність-rw-r - r - показує права доступу для користувача - власника файлу, користувачів - членів групи-власника, а також для всіх інших користувачів. Перший символ з цього ряду (-) позначає тип файлу. Символ - означає, що це - звичайний файл, який не є каталогом (у цьому випадку першим символом було б d) або псевдофайлом пристрої (було б c або b). Наступні три символи (rw-) представляють собою права доступу, надані власнику ivanov. Символ r - скорочення від read (англ. читати), а w - скорочення від write (англ. писати). Таким чином, ivanov має право на читання і запис (зміна) файла report1303.

Після символу w міг би стояти символ x, що означає наявність прав на виконання (англ. execute, виконувати) файлу. Однак символ -, що стоїть тут замість x, вказує, що ivanov не має права на виконання цього файлу. Це розумно, тому що файл report1303 не є програмою. У той же час, користувач, що реєструється в системі як ivanov, при бажанні може надати собі право на виконання даного файлу, оскільки є його власником. Для зміни прав доступу до файлу або каталогу використовується команда chmod.

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

-Rwxr-x - x

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

-Rw -------

Тільки власник файлу може читати і змінювати його.

-Rwxrwxrwx

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

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

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


Права доступу та адміністрування системи

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

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

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти