2. Основи роботи з файлами

Анотація

Порівняно з Windows® і більшістю інших операційних систем, в GNU/Linux роботу з файлами організовано зовсім інакше. У цьому розділі ми розглянемо найбільш очевидні відмінності. Для отримання додаткової інформації прочитайте, будь ласка, Розділ 4, Файлова система Linux.

Основні відмінності є прямим результатом того факту, що Linux є багатокористувацькою системою: кожен файл є виняткової власністю одного користувача й однієї групи. Ще один момент про користувачів і групи, який ми не згадали, полягає в тому, що кожен з них володіє особистим каталогом (під назвою домашній каталог). Користувач є власником цього каталогу і всіх створюваних у ньому файлів. Також зверніть увагу, що з ними також асоціюється група, яка є основний групою, до якої належить користувач. Як було сказано раніше (див. Параграф 1, “Користувачі та групи”), користувач може бути членом кількох груп одночасно.

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

Існує три різновиди прав доступу:

  1. Права на читання (Read, r): користувачеві дозволяється читати вміст файла. Стосовно до каталогів це означає, що користувач може переглянути його вміст (тобто список файлів цього каталогу).

  2. Права на запис (Write, w): дозволяє змінювати вміст файла. Стосовно до каталогів право на запис дає користувачеві можливість додавати чи видаляти файли з цього каталогу, навіть якщо він не є власником цих файлів.

  3. Права на виконання (eXecute, x): дозволяє запуск файла (зазвичай лише виконувані файли мають цей тип прав доступу). Стосовно до каталогів це надає користувачеві можливість проходити крізь нього, що означає ввійти в цей каталог чи пройти крізь нього. Зверніть увагу, що це відрізняється від доступу на читання: ви в змозі пройти через каталог, але прочитати його вміст все-таки не зможете!

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

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

$ ls -l
total 1
-rw-r-----   1 queen    users           0 Jul  8 14:11 a_file
drwxr-xr--   2 peter    users        1024 Jul  8 14:11 a_directory/
$

Результати виконання команди ls -l (зліва направо):

Давайте ближче розглянемо права доступу для кожного з цих файлів: спочатку ми повинні відкинути перший символ, який означає тип файла, і для файла a_file ми отримаємо такі права: rw-r-----. Нижче представлена схема організації прав:

Для каталогу a_directory права виглядають так rwxr-xr--, тож звідси:

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

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

[Примітка]Примітка

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



[1] За умовчанням приховані файли не будуть відображатися у файловому менеджері доти, доки ви не скажете йому зробити це. У терміналі ви повинні набрати команду ls -a, щоб побачити всі файли, включаючи приховані. Найчастіше в них міститься конфігураційна інформація. В якості прикладу погляньте на файли .mozilla чи .openoffice свого каталогу home/.