Дозволи для файлів Linux

Дозволи файлів Linux - 1.0

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

Дозволи та право власності - чому? >

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

Навіть якщо ви єдиний користувач звичайної настільної системи, дозволи на файли допомагають захистити важливі файли як від сторонніх, так і від власних помилок. 🙂

 

Робота з файлами >

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

Користувач: Ім’я користувача особи, яка володіє файлом. За замовчуванням користувач, який створив файл, стане його власником.

Група: Група користувачів, якій належить файл. Усі користувачі, які належать до групи, яка володіє файлом, матимуть однакові дозволи на доступ до файлу. Це корисно, якщо, наприклад, у вас є проект, який вимагає купу різних користувачів, щоб мати доступ до певних файлів, а інші - ні. У цьому випадку ви додасте всіх користувачів до однієї групи, переконайтесь, що необхідні файли належать цій групі, і відповідно встановите дозволи групи файлів.

Інший: Користувач, який не є власником файлу і не належить до тієї самої групи, до якої належить файл. Іншими словами, якщо ви встановите дозвіл для категорії «інше», це за замовчуванням вплине на всіх інших. З цієї причини люди часто говорять про встановлення біта дозволу “світ”, маючи на увазі встановлення дозволів для “іншого”.

 

Розуміння прав доступу до файлів >

У Linux існує три типи дозволів на доступ: читання, запис і виконання. Ці дозволи визначаються окремо для власника файлу, групи та всіх інших користувачів.

Дозвіл на читання. У звичайному файлі біт дозволу на читання означає, що файл можна відкрити і прочитати. У каталозі дозвіл на читання означає, що ви можете вказати вміст каталогу.

Дозвіл на запис. У звичайному файлі це означає, що ви можете змінити файл, тобто написати нові дані у файл. У випадку з каталогом дозвіл на запис означає, що ви можете додавати, видаляти та перейменовувати файли в каталозі. Це означає, що якщо у файлі є біт дозволу на запис, вам дозволено змінювати вміст файлу, але ви можете перейменовувати або видаляти файл, лише якщо дозволи файлу каталог дозволити вам це зробити.

Виконати дозвіл. У випадку звичайного файлу це означає, що ви можете виконати файл як програму або сценарій оболонки. У каталозі дозвіл на виконання (також званий «біт пошуку») дозволяє отримати доступ до файлів у каталозі та ввести його разом із cd команда, наприклад. Однак зауважте, що, хоча біт виконання дозволяє вам увійти в каталог, вам не дозволено перераховувати його вміст, якщо ви також не маєте дозволу на читання в цьому каталозі.

 

Перегляд прав доступу до файлів >

Ви можете переглядати дозволи доступу до файлу, виконуючи довгий список каталогів з ls -l команду. Це може виглядати довгий список каталогу:

me@puter: /home/writers$ ls -l
total 17
drwxr-xr-x 3 nana writers 80 2005-09-20 21:37 dir
-rw-r----- 1 nana writers 8187 2005-09-19 13:35 file
-rwxr-xr-x 1 nana writers 10348 2005-07-17 20:31 otherfile

Що робить вихід ls -l маю на увазі? Самий перший стовпець, той, що виглядає як згубна джамбо, показує тип файлу та дозволи. Другий стовпець показує кількість посилань (записів каталогу, які посилаються на файл), третій - власника файлу, а четвертий - групу, до якої належить файл. Інші стовпці показують розмір файлу в байтах, дату та час останньої модифікації та ім'я файлу.

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

Перша група складається лише з одного символу, і вона показує тип файлу. Наприклад, d означає каталог і - означає звичайний файл, тому, якщо ви подивитесь на наш приклад виводу, ви помітите dir є каталогом, в той час як file та  otherfile є звичайними файлами.

Першим символом може бути будь-який з них:

d = каталог
- = звичайний файл
l = символічне посилання
s = Сокет домену Unix
p = названа труба
c = символ пристрою
b = блокувати файл пристрою

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

Символи досить легко запам'ятовуються.

r = дозвіл на читання
w = дозвіл на запис
x = дозвіл на виконання
- = немає дозволу

Що це означає на практиці? Давайте наведемо приклад. Пам’ятаєте уявний перелік каталогів, який ми робили на початку? Результат виглядав так:

drwxr-xr-x 3 nana writers 80 2005-09-20 21:37 dir
-rw-r----- 1 nana writers 8187 2005-09-19 13:35 file
-rwxr-xr-x 1 nana writers 10348 2005-07-17 20:31 otherfile

Як ми вже помітили, dir є каталогом, оскільки перший стовпець починається з a d. Власником цього каталогу є користувач nana і власник групи writers. Перші три символи, rwx, вкажіть власника каталогу, nana у цьому випадку має повний доступ до каталогу. Користувач nana здатний отримувати доступ, переглядати та змінювати файли в цьому каталозі. Наступні три символи, r-x, вказують, що всі користувачі належать до групи writers мають дозволи на читання та виконання каталогу. Вони можуть переходити в каталог, виконувати файли та переглядати його вміст. Однак, оскільки вони не мають дозволів на запис, вони не можуть вносити зміни до вмісту каталогу. Нарешті, останні три символи, r-x, вказують, що всі користувачі, які не є nana або не належать до групи writers, мають права читання та виконання в каталозі.

Як щодо file? Оскільки перший стовпець починається з a -, файл - звичайний файл, що належить користувачеві nana і група writers, подібно до каталогу в нашому прикладі. Перші три символи, rw-, вкажіть, що власник має доступ до файлу для читання та запису. За наступними трьома символами, r--, користувачі, що належать до групи writers може переглядати файл, але не змінювати його або виконувати. Останні три символи, ---, вказати, що ніхто інший не має доступу до файлу.

Аналогічно можна побачити otherfile це звичайний файл, і його власник має повний доступ до нього, а всі інші можуть читати та виконувати файл, але не змінювати його.

 

Як встановити дозволи для файлів - символічний режим >

Ви можете встановити права доступу до файлів за допомогою chmod команди. Як користувач root, так і власник файлу можуть встановлювати дозволи для файлів. chmod має два режими: символічний і числовий.

Запам'ятати символічний режим досить легко. По-перше, ви вирішуєте, чи встановлюєте ви дозволи для користувача (u), групи (g), інших (o) або всіх трьох (a). Потім ви або додаєте дозвіл (+), видаляєте його (-), або знищуєте попередні дозволи та додаєте новий (=). Далі ви вирішуєте, чи встановлюєте ви дозвіл на читання (r), дозвіл на запис (w) або виконуєте дозвіл (x). Нарешті, ти скажеш chmod дозволи якого файлу ви хочете змінити.

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

Видаліть усі дозволи, але додайте дозволу на читання для всіх:
chmod a=r testfile
Після команди дозволи файлу будуть -r--r--r--

Додати права доступу для групи:
chmod g+x testfile
Тепер дозволи файлу будуть -r--r-xr--

Додайте як дозволи на запис, так і на виконання для власника файлу. Зверніть увагу, як ви можете встановити кілька дозволів одночасно:
chmod u+wx testfile
Після цього дозволу файлу буде -rwxr-xr--

Видаліть дозвіл на виконання як власника файлу, так і групи. Знову зауважте, як ви можете встановити їх обидва одночасно:
chmod ug-x testfile
Тепер дозволи -rw-r--r--

Як підсумок, ознайомтеся з цим коротким посиланням для встановлення прав доступу до файлів у символьному режимі:

Який користувач?
u Користувач / власник
g група
o інший
a всі
Що ж робити?
+ додати цей дозвіл
- видалити цей дозвіл
= встановити саме цей дозвіл
Які дозволи?
r зчитування
w запис
x виконувати

 

Як встановити дозволи для файлів - числовий режим >

Інший режим, в якому chmod може використовуватися числовий режим. У числовому режимі дозволи на файл не представлені символами. Натомість вони представлені трицифровим восьмеричним числом.

= read (r)
2 = write (w)
1 = виконати (x)
0 = немає дозволу (-)

Щоб отримати потрібні біти дозволу, ви відповідно складаєте номери. Наприклад, дозволи rwx будуть 4 + 2 + 1 = 7, rx будуть 4 + 1 = 5, а rw будуть 4 + 2 = 6. Оскільки ви встановлюєте окремі дозволи для власника, групи та інших осіб, вам знадобиться тризначне число, що представляє дозволи всіх цих груп.

Давайте наведемо приклад.
тестовий файл chmod 755
Це змінило б testfileдозволи для -rwxr-xr-x. Власник мав би повноцінними правами на читання, запис та виконання (7 = 4 + 2 + 1), група мала права на читання та виконання (5 = 4 + 1), і світ міг би мати права на читання та виконання .

Візьмемо ще один приклад:
тестовий файл chmod 640
В цьому випадку, testfileдозволи будуть -rw-r-----. Власник мав би дозволи на читання та запис (6 = 4 + 2), група мала би лише дозволи на читання (4), а інші не мали дозволів на доступ (0).

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

Яке число?
0 -
1 –X
2 -w-
3 -wx
4 г-
5 rx
6 rw-
7 rwx