Операционная система Linux



              

Иерархия прав доступа


Теперь – более подробно о том, чему соответствуют девять символов в строке атрибутов, выдаваемой ls. Эти девять символов имеют вид "rwxrwxrwx", где некоторые "r", "w" и "x" могут заменяться на "-". Очевидно, буквы отражают принятые в Linux три вида доступа – чтение, запись и использование – однако в ярлыке они присутствуют в трех экземплярах!

Дело в том, что любой пользователь (процесс) Linux по отношению к любому файлу может выступать в трех ролях: как хозяин (user), как член группы, которой принадлежит файл (group), и как посторонний (other), никаких отношений собственности на этот файл не имеющий. Строка атрибутов – это три тройки "rwx", описывающие права доступа к файлу хозяина этого файла (первая тройка, "u"), группы, которой принадлежит файл (вторая тройка, "g") и посторонних (третья тройка, "o"). Если в какой-либо тройке не хватает буквы, а вместо нее стоит "-", значит, пользователю в соответствующей роли будет в соответствующем виде доступа отказано.

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

  1. Если UID файла совпадает с UID процесса, пользователь – хозяин файла
  2. Если GID файла совпадает с GID любой

    группы, в которую входит пользователь, он – член группы, которой принадлежит файл.

  3. Если ни UID, ни GID файла не пересекаются с UID процесса и списком групп, в которые входит запустивший его пользователь, этот пользователь – посторонний.

Именно в роли хозяина пользователь (процесс) может изменять

ярлык файла. Это вполне соответствует обыденным понятиям о собственности ("мой файл: захочу – покажу, захочу – спрячу"). Единственное, чего не может делать хозяин со своим файлом – менять ему хозяина.

Далее следует протокол действий Гуревича, который, пользуясь возможностями суперпользователя, создал в каталоге /tmp несколько файлов с различными правами доступа к ним. Для того чтобы напомнить человеку, что работа ведется с правами суперпользователя (это требует гораздо большей ответственности), bash заменил привычный "доллар" в конце приглашения командной строки на "решетку". Входное имя он тоже заменил, но практика показывает, что решетка эффективнее:




Содержание  Назад  Вперед