Права доступу Linux Mint, Все про ремонт та налаштування комп’ютера
Тепер торкнемося одного з найважливіших питань, з якими стикається користувач при знайомстві з Linux. Йтиметься про права доступу. Файли в Linux, як і процеси, створені користувачем, мають двох власників: користувача (user owner) і групу-користувача (group owner). Крім цього визначаються права для інших (other), тобто тих, які не увійшли до перших двох списків. Кожен користувач може бути членом відразу кількох груп, одна з яких називається первинною (primary), а решта – додатковими (supplementary). Наявність груп дає певну гнучкість у створенні доступу до конкретного файлу. Наприклад, щоб дозволити записування дисків у Linux Mint,
достатньо додати користувача до групи cdrom. Аналогічно можна організувати
спільне використання деякого ресурсу: достатньо створити нову групу та включити до неї всіх, кому це дійсно необхідно. Зазвичай власником
файлу є користувач, який його створив, а власник-група встановлюється рівною первинній групі користувача, який створив файл.
У деяких версіях Unix власник-група успадковується від власника-групи каталогу, де створюється файл.
Переглянути поточні права можна за допомогою команди ls -l, як ми робили раніше:
-rw-r–r-1 grinder grinder 6706501 2010-05-11 00:29 sound.mрЗ
-rw-r-r-, розберемо трохи нижче. У третій і четвертій (тобто grinder grinder)
виводяться власник-користувач та група.
Щоб змінити власників файлу, використовується команда chown, яка приймає як параметри ім'я нового власника або групу та список файлів. Формат такий:
$ sudo chown new_owner file1 file2 …
На місці назви файлу може бути ім'якаталогу, але при цьому власник файлів усередині каталогу не зміниться, а щоб це сталося, додаємо прапорець -R. При використанні будь-якої команди оболонки можна користуватися регулярними виразами, якщо є необхідність відібрати файли, які відповідають певному критерію:
$ sudo chown -R user *
У прикладі власником всіх файлів у поточному каталозі та підкаталогах буде користувач user. Команда chown дозволяє встановити і групу-власника. Для
цього потрібно відразу за ім'ям власника без пробілів та інших знаків поставити двокрапку та написати назву необхідної групи:
$ sudo chown - R sergej: video *
Допускається і такий варіант запису:
$ sudochown - R: video *.
Крім chown для зміни власника групи можна використовувати команду chgrp, синтаксис використання цієї команди аналогічний попередньої:
$chgrp audio /home/user/*
Володіння файлом визначає операції, які той чи інший користувач може зробити над файлом. Найбільш очевидні з них – це зміна власника та групи для деякого файлу. Дані операції може зробити суперкористувач і власник файлу (для деяких - тільки суперкористувач). Причому групу, якщо ви власник файлу, можна змінити тільки на свою первинну (за замовчуванням має ту ж назву, як і ім'я відповідного користувача). Всі ці обмеження запроваджені з кількох причин. По-перше, щоб ніхто не міг підсунути якийсь шкідливий файл або скрипт, а по-друге, щоб, якщо на комп'ютері встановлено ліміт дискового простору для конкретного користувача, не можна було перевищити його, просто перевизначивши власника.
Крім володіння файлом права доступу визначають базові операції, які можна здійснити над файлом. Їх три:
•Read — доступ до читання;
• Write – доступ до запису;
• eXecute — доступ до виконання.
Для встановлення відповідних прав використовується команда chmod. Застосовується вона у двох формах: абсолютної, коли ігноруються старі права та встановлюються нові, та відносної, коли до наявних прав додаються нові (або забираються старі). Абсолютна форма передбачає завдання прав доступу у вісімковій формі. Щоб отримати повний код потрібного режиму файлу, потрібно просто скласти значення кодів, наведених у таблиці. 4.1.
Таблиця 4.1. Код команди chmod
Право на виконання для всіх
Право на запис для всіх
Право на читання для всіх
Право на виконання для групи
Право на запис для групи
Право на читання для групи
Право на виконання для власника
Право на запис для власника
Таблиця 4.1 (продовження)
Право на читання для власника
Увімкнення біта збереження задачі
Якщо файлом, який виконується включення біта, є SGID
Якщо файлом, який виконується включення біта, є SUID
Таким чином, команда
$ chmod 755 fil e
встановлює такі права доступу: якщо це виконуваний файл, то запустити його виконання і прочитати вміст мають право все (тобто власник, група та інші), а власник додатково має право зміну вмісту — запис.
Відносна форма команди вимагає конкретної вказівки класів доступу (і - власник, g - група, про - інші, а - всі разом), відповідні права доступу (r - читання, w - запис, х - виконання) та операцію, яку необхідно зробити для списку файлів (+ - додати, - видалити, = - присвоїти) для відповідного списку файлів. Наприклад,команда
$ sud o chmod u+w, ug+r , a+x fil e
До речі, викликавши властивості файлу або каталогу та перейшовши на вкладку Права, ви можете змінити групу та параметри доступу до файлу для тих об'єктів, власниками яких ви є (рис. 4.4).
Для каталогів права доступу мають дещо інше значення. Каталог, як говорилося вище, це файл, що містить імена всіх файлів, які є в цьому каталозі. Так ось, право на читання каталогу дозволяє лише отримати імена файлів, що знаходяться в даному каталозі. А ось для того, щоб отримати іншу додаткову інформацію, потрібне право на виконання. Щоб перейти до каталогу, необхідно мати право на виконання. До речі, через наявність цих особливостей можна досягти так званого ефекту dark directory, коли створюємо в каталозі файли, які доступні, тільки якщо користувач знає точно ім'я відповідного файлу. Право на запис для каталогу дозволяє змінювати його вміст, тобто видаляти та записувати файли, при цьому права доступу
конкретні файли ігноруються.

Мал. 4.4. Зміна параметрів доступу до файлу
Зверніть увагу ще на одну мить. Права на доступ перевіряються в наступній послідовності: суперкористувач, власник, група-власник та інші. Отже, якщо ви, будучи власником, забули встановити собі право на запис, але встановили його всім іншим, то не сподівайтеся, що зможете записати в нього що-небудь, навіть якщо ви є членом групи, просто тому, що всі інші можуть, а ви є власником. Система при запиті потрібного ресурсу перевірить, ким він запитується у наведеній вище послідовності, і допустить лише до дозволених операцій, подальша перевірка прав не буде проводитися.
Групу, вяку входить користувач, можна змінити, відредагувавши файл /etc/group. Усередині файл складається з рядка рядків виду
тобто в даному рядку описана група cdrom, в яку входить користувач Grinder. Щоб додати до цієї групи користувача user, просто дописуємо його логін через кому:
Цифра 24 означає GID (group id) – цифрове значення групи.
Крім того, Linux Mint пропонує графічний інструмент управління групами та обліковими записами, який можна викликати з меню Адміністрація •
Користувачі та групи (рис. 4.5).

Мал. 4.5. Управління групами та обліковими записами
З його допомогою можна просто додати новий обліковий запис або групу і встановити членство в групах.
Дані про обліковий запис зберігаються у файлі /etc/passwd. Формат такий: username:пароль:uid:gid:ui d коментарів:домашній каталог:shel l Наприклад:
grinder:х:1000:1000:grinder. /home/grinder:/bin/bas h
Всі звичайні облікові записи мають UID з 1000.
Тепер дізнаємося, навіщо це потрібне. Наприклад, дивимося дані пристрою, що виводить звук:
crw-rw—-+ 1 root audio 14, 3 2010-06-10 11:59 /dev/dsp
тобто вважати дані може тільки користувач root і всі, хто входить до групи audio. Отже, якщо у вас не відтворюється звук і система видає, що не може отримати доступ, просто перевірте свої права.
Задля справедливості слід зазначити, що права доступу має не користувач, а процес, запущений ним. Не вдаючись до подробиць, поясню, що кожен користувач, зареєструвавшись у системі, отримує свою копію поточного процесу shell, який має встановлені ідентифікатори RID та RGID – реальні ідентифікатори користувача та первинної групи користувача. А всі процеси,запущені користувачем (дочірні), успадковують усі змінні, у тому числі RID та RGID.
У нас залишилися нерозглянутими три режими файлу: біт збереження завдання (stisky bit), а також прапори SUID та SGID. З stisky bit все просто, цей біт вказує на необхідність збереження копії програми, що виконується в пам'яті після завершення виконання. Цей режим дозволяє заощадити час на запуску програми при частому використанні, але в сучасних системах застосування цього режиму трапляється рідко.
Прапори SUID та SGID дозволяють змінити (розширити) права користувача (групи), який запустив програму, на час її виконання. Як уже говорилося, запущений додаток має такі ж права доступу до системних ресурсів, як і користувач, який запустив програму. А установки цих прапорів дозволяють призначити права доступу, виходячи з прав доступу власника файлу. Отже, якщо власником запущеної програми є root, то будь-хто, незалежно від того, хто запустив цю програму, матиме права суперкористувача. При установці прапора SUID успадковуються права власника файлу, a SGID — групи-власника.
Літера s у виведенні команди ls -l означає, що встановлений прапор SUID, а власником файлу є root, і тепер, хто б не запустив утиліту на виконання, на час роботи програми він тимчасово отримує права суперкористувача, тобто право зробити запис у захищений системний файл Природно, утиліта повинна (і робить це) проводити зміну облікового запису користувача, що тільки запустив її. Як ви розумієте, вимоги щодо безпеки до програм, які використовують цей метод, мають бути підвищеними.
Для встановлення бітів SUID/SGI D у символьній формі використовується буква s, sticky bit встановлюється буквою -t, а за допомогоюлітери l можна встановити
блокування файлу для усунення можливих конфліктів, коли кілька процесів спробують працювати з одним і тим самим файлом.
Зазвичай sticky bit встановлено у каталозі /tmp. Це зроблено для того, щоб видалити файл міг лише користувач, який його створив. При установці біта SGID для каталогу всі новостворені файли будуть успадковувати групу не по користувачеві, який його створив, а по групі - власнику каталогу.
Джерело: Яремчук С. А. Linux Mint на 100%. - СПб.: Пітер, 2011. - 240 е.: іл. - (Серія "На 100%").