Теперь – более подробно о том, чему соответствуют девять символов в строке атрибутов, выдаваемой ls. Эти девять символов имеют вид "rwxrwxrwx", где некоторые "r", "w" и "x" могут заменяться на "-". Очевидно, буквы отражают принятые в Linux три вида доступа – чтение, запись и использование – однако в ярлыке они присутствуют в трех экземплярах!
Дело в том, что любой пользователь (процесс) Linux по отношению к любому файлу может выступать в трех ролях: как хозяин (user), как член группы, которой принадлежит файл (group), и как посторонний (other), никаких отношений собственности на этот файл не имеющий. Строка атрибутов – это три тройки "rwx", описывающие права доступа к файлу хозяина этого файла (первая тройка, "u"), группы, которой принадлежит файл (вторая тройка, "g") и посторонних (третья тройка, "o"). Если в какой-либо тройке не хватает буквы, а вместо нее стоит "-", значит, пользователю в соответствующей роли будет в соответствующем виде доступа отказано.
При выяснении отношений между файлом и пользователем, запустившим процесс, роль определяется так:
группы, в которую входит пользователь, он – член группы, которой принадлежит файл.
Именно в роли хозяина пользователь (процесс) может изменять
ярлык файла. Это вполне соответствует обыденным понятиям о собственности ("мой файл: захочу – покажу, захочу – спрячу"). Единственное, чего не может делать хозяин со своим файлом – менять ему хозяина.
Далее следует протокол действий Гуревича, который, пользуясь возможностями суперпользователя, создал в каталоге /tmp несколько файлов с различными правами доступа к ним. Для того чтобы напомнить человеку, что работа ведется с правами суперпользователя (это требует гораздо большей ответственности), bash заменил привычный "доллар" в конце приглашения командной строки на "решетку". Входное имя он тоже заменил, но практика показывает, что решетка эффективнее: