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

Аннотация

По сравнению с Windows® и большинством других операционных систем, в GNU/Linux работа с файлами организована совсем по-другому. В этом разделе мы рассмотрим большинство явных различий. Для получения дополнительной информации прочтите, пожалуйста, Глава 36, Файловая система 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® - предоставляет значительно большую гибкость и имеет меньше ограничений.

[Замечание]Замечание

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



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