1 авг. 2008 г.

Права доступа и владельцы

Несколько раньше была описана ситуация, когда при попытке перейти в домашний каталог суперпользователя система выдавала следующее сообщение:
bash: cd: /root/: Permission denied
Это была демонстрация одного из способов защиты системы в Linux. Linux, как и UNIX, является многопользовательской системой и разрешение доступа к файлам — это один из способов ее защиты от злонамеренного вмешательства.
Как мы рассказывали ранее, один из способов получения доступа к требуемому файлу или каталогу, в доступе к которому вам отказано, — ввести в командной строке su -. Человек, знающий пароль суперпользователя, имеет доступ ко всему.
Но переход к профилю суперпользователя не всегда удобен и не может быть рекомендован, так как всегда существует возможность сделать ошибку и изменить важный конфигурационный файл.
Все файлы и каталоги «находятся в собственности» пользователя, который их создал. Ранее вы создавали файл example1.txt в вашем домашнем каталоге, таким образом вы являетесь владельцем файла example1.txt.
Это означает, что вы можете указать, кому разрешено читать этот файл, кто может записывать текст в этот файл, или (если это программа, а не текстовый файл) кто может запускать его на исполнение.

Чтение, запись и запуск на исполнение — вот три действия, на которые требуется разрешение. Так как пользователи при создании учетных записей делятся на группы, вы можете также указать, имеет ли конкретная группа права на чтение, запись или запуск файла на исполнение.
Давайте рассмотрим более тщательно, что сообщает о файле example1.txt команда ls с опцией -l:
[user@localhost ~]$ ls -l example1.txt
-rw-rw-r--  1 user user 42 Мар 24 22:07 example1.txt
Выдается много подробностей. Можно видеть, кто имеет право на чтение (r) и запись (w) в файл, а также кто создал файл (user) и к какой группе принадлежит этот пользователь (user). Напоминаем, что по умолчанию имя группы, к которой принадлежит пользователь, совпадает с именем пользователя.
Остальная информация, выведенная справа от колонки групп, сообщает размер файла, дату и время его создания и его имя.
В первой колонке показаны текущие права доступа. Здесь имеется десять позиций. В первой позиции указывается тип файла. В оставшихся девяти выводятся права доступа для трех классов пользователей.
Пример:
-rw-rw-r--
Три класса пользователей — это владелец файла, члены группы, являющейся владельцем файла, и «остальные», то есть остальные пользователи системы.
  -     (rw-)     (rw-)    (r--) 1 user user
 |       |         |        |
тип   владелец   группа  остальные
(type) (owner)   (group)  (others)
     
В первой позиции, где указывается тип файла, может быть выведено что-то из следующего списка:
  • d — каталог;
  • - (дефис) — обычный файл (не каталог и не символьная ссылка на другой файл);
  • l — символьная ссылка на другой файл или программу где-то в системе.
Далее идут три набора по три символа. Это могут быть:
  • r — разрешено чтение файла;
  • w — разрешена запись в файл;
  • x — разрешено запускать файл на исполнение (если это программа);
  • - (дефис) — конкретное право не дано.
Если вы видите дефис в классе владельца, группы или остальных, это означает, что действие над файлом не разрешено. Вернемся к файлу example1.txt и определим права доступа к нему.
ls -l example1.txt
-rw-rw-r--  1 user user 42 Мар 24 22:07 example1.txt
Владелец файла (в данном случае это user) может читать файл и записывать в него информацию. Группа, тоже user, также может читать файл example1.txt и записывать в него информацию. Этот файл не является программой, поэтому ни владелец, ни группа не могут запустить его на исполнение.

Комментариев нет: