Основы Файла

Файлы это еще одна тема, где GNU/Linux существенно отличается от Windows и большинства других операционных систем. Мы рассмотрим здесь большинство явных различий. Для получения большей информации смотрите главу Файловая система Linux, в которой это все рассмотрено подробно.

Преимущественные различия являются прямым следствием того факта,что Linux это многопользовательская система: каждый файл это эксклюзивная собственность одного пользователя и одной группы. Еще одна вещь, которую мы не упоминали о пользователях и группах, состоит в том, что каждый из них обладает личным каталогом (называемым домашний каталог ). Пользователь является владельцем этого каталога и всех файлов, которые он в нем будет создавать.

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

Существуют три различных варианта прав:

  1. Read (права на чтение) (r): разрешает чтение содержимого файла . Для каталога это обозначает разрешение просмотра его содержимого (то есть файлов в этом каталоге).

  2. Write (права на запись) (w): позволяет изменение содержимого файла. Для каталога права на запись позволяют пользователю добавлять и/или удалять файлы в этом каталоге, даже если пользователь не является владельцем этих файлов.

  3. eXecute (права на запуск/поиск) (x): разрешают запуск файла (как следствие, все выполняемые файлы обычно идут с этими установленными правами). Для каталога, это позволяет пользователю пересекать(traverse) его (что означает вход в каталог или проход через него). Заметьте, что это отделено от прав на чтение: очень может быть, что вы можете проходить через каталог, но не можете читать его содержимое!

Возможны любые комбинации этих прав. Например, вы можете разрешить чтение файла только для себя и запретить для других. Вы даже можете сделать обратное, даже если это не очень логично на первый взгляд... Как владелец файла, вы также можете сменить владельца группы (если и только если вы являетесь членом новой группы), и даже лишить себя прав на файл (собственно поменять его владельца). Естественно, что если вы лишаете себя прав владельца файла, вы потеряете все права на него...

Давайте приведем пример файла и каталога. Ниже находится результат выполнения команды 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 может изменять атрибуты (права, владельца и владельца группы) всех файлов, даже если он не является владельцем. Это означает, что он также может предоставлять себе монопольное использование! Он может читать файлы, на которые у него нет права на чтение , пересекать каталоги, к которым у него обычно нет прав доступа и так далее. И если он испытывает недостаток прав, ему достаточно только добавить их...

И последнее. Нет никакой разницы между именами файлов в UNIX и Windows мирах. Что касается UNIX, то она предоставляет большую гибкость и имеет меньше ограничений: