Байланысты: Архитектура вычислительных систем. Компьютерный лабораторный практикум
1.2.14 Права доступа к файлам и каталогам Поскольку Linux — система многопользовательская, вопрос об
организации разграничения доступа к файлам и каталогам является одним из
существенных вопросов, которые должна решать операционная система.
Механизмы разграничения доступа, разработанные для системы UNIX в 70-х
годах (возможно, впрочем, они предлагались кем-то и раньше), очень просты,
но они оказались настолько эффективными, что просуществовали уже более 30
лет и по сей день успешно выполняют стоящие перед ними задачи.
В основе механизмов разграничения доступа лежат имена пользователей
и имена групп пользователей. В Linux каждый пользователь имеет уникальное
имя, под которым он входит в систему (логируется). Кроме того, в системе
создается некоторое число групп пользователей, причем каждый пользователь
может быть включен в одну или несколько групп. Создает и удаляет группы
суперпользователь, он же может изменять состав участников той или иной
группы. Члены разных групп могут иметь разные права по доступу к файлам,
например, группа администраторов может иметь больше прав, чем группа
программистов.
В индексном дескрипторе каждого файла записаны имя так называемого
владельца файла и группы, которая имеет права на этот файл. Первоначально,
при создании файла его владельцем объявляется тот пользователь, который этот
файл создал. Точнее — тот пользователь, от чьего имени запущен процесс,
создающий файл. Группа тоже назначается при создании файла — по
идентификатору группы процесса, создающего файл. Владельца и группу файла
можно поменять в ходе дальнейшей работы с помощью команд chown и chgrp .
Вообще говоря, права доступа и информация о типе файла в UNIX-
системах хранятся в индексных дескрипторах в отдельной структуре,
состоящей из двух байтов, т. е. из 16 бит (это естественно, ведь компьютер
оперирует битами, а не символами r, w, x). Четыре бита из этих 16-ти отведены
для кодированной записи о типе файла. Следующие три бита задают особые
свойства исполняемых файлов, о которых мы скажем чуть позже. И, наконец,
оставшиеся 9 бит определяют права доступа к файлу. Эти 9 бит разделяются на
3 группы по три бита. Первые три бита задают права пользователя, следующие
три бита — права группы, последние 3 бита определяют права всех остальных
пользователей (т. е. всех пользователей, за исключением владельца файла и
группы файла).
При этом, если соответствующий бит имеет значение 1, то право
предоставляется, а если он равен 0, то право не предоставляется. В символьной
форме записи прав единица заменяется соответствующим символом (r, w или
x), а 0 представляется прочерком.
Право на чтение (r) файла означает, что пользователь может
просматривать содержимое файла с помощью различных команд просмотра,
например, командой more или с помощью любого текстового редактора. Но,
подредактировав содержимое файла в текстовом редакторе, вы не сможете
13
сохранить изменения в файле на диске, если не имеете права на запись (w) в
этот файл. Право на выполнение (x) означает, что вы можете загрузить файл в
память и попытаться запустить его на выполнение как исполняемую программу.
Конечно, если в действительности файл не является программой (или скриптом
shell), то запустить этот файл на выполнение не удастся, но, с другой стороны,
даже если файл действительно является программой, но право на выполнение
для него не установлено, то он тоже не запустится.