Визначення прав доступу до файлів
В ОС Linux кожним файлом володіє певний користувач та група. Права доступу визначають окремо для трьох категорій користувачів: власника, групи та інших користувачів. Подивитися на права доступу до файлів у біжучому каталозі можна, наприклад командою
ls –l
Приклад виводу цієї команди:
-rw-rw-r-- 1 user user 245 Жов 12 21:07 0471710458.rar
drwxr-xr-x 5 user user 1024 Лис 8 15:15 bin/
drwx------ 2 user user 1024 Лис 2 10:03 Desktop/
-rw-rw-r-- 1 user user 669 Жов 8 23:24 Diagram1.dia
drwxrwxr-x 3 user user 1024 Тра 29 17:07 Diss/
drwxrwxr-x 2 user user 1024 Жов 5 20:13 Documents/
drwxrwxr-x 2 user user 1024 Жов 12 19:35 Download/
Тип файла та права доступу до нього відображені у першій колонці виводу
Для зручності роботи з командами правила доступу мають числові та буквенні коди
Код |
Значення |
0 або - |
Відповідного права доступу немає |
4 або r |
Право на читання |
2 або w |
Право на запис |
1 або x |
Право на виконання |
Код |
Значення |
u |
Права користувача |
g |
Права групи |
o |
Права інших користувачів |
Кожен користувач повинен знати своє login- ім’я та до яких груп він належить. Цю інформацію можна отримати командою:
Id
Login-ім’я також зберігається у змінній USER:
Echo $USER
Команда chmod
Команда chmod дозволяє змінити права доступу до файла. Вона сприймає як числові, так і буквенні параметри. Наприклад, щоб додати для власнику файла hello право на виконання, можна використати команду:
chmod u+x hello
Аналогічно, щоб забрати у інших користувачів права на запис та виконання для цього файлу, можна виконати команду:
chmod o-wx hello
Приклади застосування команди chmod з числовими параметрами і водночас найбільш вживані конфігурації прав доступу наведені у таблиці
Команда |
Значення |
Chmod 400 файл |
Захист файлу від випадкового перезаписування |
Chmod 500 каталог |
Захист файлів каталогу від випадкової зміни |
Chmod 600 файл |
Приватний файл, який може бути змінений тільки користувачем, що ввів цю команду |
Chmod 644 файл |
Загальнодоступний для читання файл, який може бути змінено тільки користувачем що ввів цю команду |
Chmod 660 файл |
Користувачі, що належать групі, можуть змінювати файл. Інші взагалі не мають до нього доступу |
Chmod 700 файл |
Захист файлу від інших користувачів |
Chmod 755 каталог |
Файли в каталозі можна читати та виконувати усім, а змінювати -0 тільки власником |
Chmod 755 файл |
Звичайно використовується для сумісного використання файлів у межах групи |
Chmod 777 файл |
Всі мають повні права доступу до файлу |
Для отримання більш детальної інформації по параметрах команди chmod можна подивитися у системній довідці.
Робота з групами
Кожен користувач по замовченню належить до однієї (головної) групи. Власне ця група вказана в файлі /etc/group для користувача. У більшості сучасних версій Linux прийнято, що користувач по замовченню належить до своєї приватної групи. (Ця група має ту ж назву, що й ім’я користувача та містить тільки цього користувача).
Водночас, користувач може перейти і до інших груп. Список груп, до яких він моде перейти можна отримати з виводу команди id. Для переходу в іншу групу (наприклад, групу web) користувачу треба ввести команду:
newgrp web
Якщо групу змінено, і наприклад, користувач створює новий файл, то цим файлом буде володіти вже змінена група.
Маска файлів
Коли створено новий файл, то система присвоює йому певні стандартні права доступу. Файли без прав доступу не існують у Linux. Різні користувачі мають різні значення цих стандартних прав доступу. Наприклад, root має більші обмеження щодо стандартних прав доступу.
Значення зміщення стандартних прав доступу для нового файлу можна отримати командою
umask
Нехай вивід команди umask був 002. Розглянемо, як визначають права доступу до новоствореного каталогу або файлу. Спочатку каталогу присвоюють повні права доступу (777). А файлу присвоюють права доступу 666 (читання та запис для усіх, виконання – нікому). А потім числове значення визначене командою umask віднімається від заданих прав доступу. Для наведеного прикладу каталог отримає права доступу 775, а файл - 664
Значення зміщення umask задається в файлах /etc/bashrc або /etc/profile
Зміна власника файлу або каталогу
Якщо власник файлу або каталогу був визначений неправильно, його можна змінити командою
Chown newuser file
Аналогічно, групу можна змінити командою chgrp
Команди chown та chgrp мають багато інших можливостей, у тому числі – рекурсивну зміну власника для файлу чи каталогу.
Як правило, ці команди дозволено виконувати тільки адміністратору системи
Спеціальні коди доступу
Визначено три спеціальні біти у коді доступу каталогу або файлу
Sticky біт (1000). Якщо цей біт встановити для певного каталогу, то користувач зможе змінювати тільки такі файли у цьому каталозі, власником яких він є (при наявності відповідних прав доступу до файлів). Така схема доступу використиовується, наприклад, у каталозі /var/tmp де записані багато файлів різних користувачів. Встановлений sticky біт позначається буквою t у списку прав доступу до файла.
SUID (set user ID, 4000) та SGID (set group ID, 2000). Коли ці біти встановлено для виконувального файла, він буде виконуватися від імені власника файла, а не користувача, що запустив його на виконання. Це дозволяє забезпечити доступ до ресурсів системи. Зміщення позначаються буквою s у списку прав доступу до файла
SGID для каталогу. Якщо встановлено біт SGID для каталогу, то усі файли, створені у каталозі будуть мати власника групу ту ж, що й каталог. При цьому вже існуючі файли та перенесені у каталог файли будуть мати попередньо встановлені права доступу
