Права доступу до файлів
У будь-якій багато користувачів UNIX-системі існує поняття прав доступу на файли, які мають на увазі під собою дії, які дозволено зробити користувачеві не зачіпаючи інтереси інших користувачів. Це якийсь набір з читання-запис-виконання (r-w-x, read-write-execution) для окремо взятих власника-групи-інших (u-g-o, user-group-other).
Для кожного файлу, незалежно від його типу, будь то звичайний файл, директорія, файл псевдо-пристрої і т.д. можна подивитися його атрибути командою ls -l, де в першій колонці у вигляді послідовності з десяти символів можна подивитися права доступу. Перший символ вказує на тип файлу, а кожні наступні три символи - права доступу, відповідно, користувача-групи-інших.
Перший символ «-» означає, що це звичайний файл. Може також бути, наприклад:
Далі, як бачимо, для користувача (root) встановлені права на читання і запис, а для групи (wheel) і інших тільки на читання. Символи «-» позначають, що дія, яка повинна бути встановлене в цій позиції, заборонено.
У цій статті ми розглянемо права доступу до файлів, окремо також будуть розглянуті прапори файлів в Freebsd і атрибути файлів Linux.
Опції «rwx» для файлу означають:
- читання ( «read»). мається на увазі, що можна переглядати вмісту даного файлу і копіювати файл;
- запис ( «write») - можна змінювати / редагувати вміст файлу, але не можна видалити або перейменувати його без відповідних прав на директорію в якій знаходиться файл;
- виконання ( «execute») - можна запустити файл, якщо це скрипт, звичайно.
Якщо розглядати права на директорію, то мається на увазі трохи інше:
r - можна переглядати вміст директорії;
w -можна видаляти і створювати файли в даній директорії;
x - можна увійти в директорію і отримати доступ до файлів і піддиректоріях для виконання з ними тих дій, які для них дозволені (навіть якщо немає права на читання, досить тільки знати точну назву файлу).
Крім символьних позначень «rwx» існує ще також числове уявлення, коли встановлений «x» → «1», «w» → «2», «r» → «4», а далі складається сума кожних трьох цифр, відповідно, для власника -групи-інших. У вищеописаному випадку для файлу / var / log / messages виходить: для власника «rw-» → 4 + 2 + 0 = 6, групи та інших «r-» → 4 + 0 + 0 = 4, тобто для всього файлу будуть права «644».
Всі варіанти прав доступу, які можуть бути:
Використовуючи будь-яке з позначень можна міняти права доступу на файл, якщо ви його власник або привілейований користувач, за допомогою команди chmod. Можна або вказати в числовій формі, або в форматі, де може бути що-небудь з «ugoa» (відповідно: user, group, other, all), - якийсь символ з «+ - =» (відповідно: додавання, видалення , точна установка прав), - «rwxts» (соответсвенно: read, write, execute, Sticky-біт, SUID або SGID).
Приклади використання команди chmod, для установки / зміни на filename певних прав:
власнику - читання і запис, групі і іншим - тільки читання:
тепер додати для цього файлу eXecute для власника:
далі прибрати для групи і всіх інших можливість переглядати цей файл:
Також можна встановлювати на файли додаткові біти:
- Sticky-біт;
- SUID;
- SGID.
sticky bit (біт фіксації) - зазвичай використовується тільки для каталогів і дозволяє обмежити права на запис в нього. Якщо користувач не є власником для цього каталогу, але має права на запис, то він може видаляти тільки ті файли в каталозі, власником яких він є. Корисно для запобігання видалення файлів інших користувачів в загальнодоступних каталогах, таких як / tmp. Встановлюється цифрою «1» перед тризначною цифрою прав.
set-user-id (SUID - біт зміни ідентифікатора користувача). встановлений на файл, призводить до зміни привілеїв запущеного процесу на привілеї власника виконуваного файлу. Виконувані файли, власником яких є root, з встановленим прапором set-user-id запускаються з привілеями root, навіть якщо їх запускає звичайний пользователь.Устанавлівается цифрою «4» перед тризначною цифрою прав. Яскравий приклад - програма passwd.
set-group-id (SGID - біт зміни ідентифікатора групи). встановлений на каталог, призводить до того, що файли, створювані в такому каталозі, успадковувати групи каталогу, який може не збігатися з ідентифікатором групи, до якої належить користувач, який створив файл. Це може бути корисно для каталогів, в яких зберігаються файли, загальнодоступні для групи користувачів. Встановлюється цифрою «2» перед тризначною цифрою прав.