Фундаментальные концепции
Пользователи могут организовываться в группы, которые также нумеруются 16-битными целыми числами, называемыми GID (Group ID — идентификатор группы). Назначение пользователя в группу выполняется вручную системным администратором и заключается в создании нескольких записей (в системной базе данных), в которых содержится информация о том, какой пользователь к какой группе принадлежит. Пользователь может одновременно принадлежать к нескольким группам. Чтобы не усложнять вопрос, мы более не станем обсуждать эту возможность.
Основной механизм безопасности в операционной системе Linux прост.
Каждый процесс несет на себе UID и GID своего владельца. Когда создается файл, он получает UID и GID создающего его процесса. Файл также получает набор разрешений доступа, определяемых создающим процессом. Эти разрешения определяют доступ к этому файлу для владельца файла, для других членов группы владельца файла и для всех прочих пользователей. Для каждой из этих трех категорий определяется три вида доступа: чтение, запись и исполнение файла, что обозначается буквами r, w и x (read, write, execute) соответственно. Возможность исполнять файл, конечно, имеет смысл только в том случае, если этот файл является исполняемой двоичной программой. Попытка запустить файл, у которого есть разрешение на исполнение, но который не является исполняемым (то есть он не начинается с соответствующего заголовка), закончится ошибкой. Поскольку существуют три категории пользователей и три бита для каждой категории, все режимы доступа к файлу можно закодировать 9 битами. Некоторые примеры этих 9-битных чисел и их значения показаны в табл. 10.14.Таблица 10.14. Примеры режимов защиты файлов |
Первые два примера в табл. 10.14 очевидны. В них предоставляется полный доступ к файлу для владельца файла и его группы соответственно. В третьем примере группе владельца разрешается читать файл, но не разрешается его изменять, а всем посторонним запрещается всякий доступ. Вариант из четвертого примера часто применяется в тех случаях, когда владелец файла с данными желает сделать его публичным. Пятый пример показывает режим защиты файла, представляющего собой общедоступную программу. В шестом примере доступ запрещен всем. Такой режим иногда используется для файлов-пустышек, применяемых для реализации взаимных исключений, так как любая попытка создания такого файла приведет к ошибке, если такой файл уже существует. То есть если несколько программ одновременно попытаются создать такой файл в качестве блокировки, только первой из них это удастся. Режим, показанный в последнем примере, довольно странный, так как он предоставляет всем посторонним пользователям больше доступа, чем владельцу файла. Тем не менее такой режим допустим. К счастью, у владельца файла всегда есть способ изменить в дальнейшем режим доступа к файлу, даже если ему будет запрещен всякий доступ к самому файлу.
Пользователь, UID которого равен 0, является особым пользователем и называется суперпользователем (superuser или root). Суперпользователь может читать и писать все файлы в системе независимо от того, кто ими владеет и как они защищены. Процессы с UID = 0 также имеют возможность использовать небольшую группу защищенных системных вызовов, доступ к которым запрещен обычным пользователям.
Как правило, пароль суперпользователя известен только системному администратору, хотя многие студенты младших курсов смотрят на поиск дыр в системе безопасности, которые помогут им регистрироваться в системе в качестве суперпользователя, как на увлекательный спорт. Руководство компьютерных центров обычно недовольно такого рода активностью.Каталоги — это файлы, они обладают теми же самыми режимами защиты, что и обычные файлы. Отличие состоит в том, что бит x интерпретируется для каталогов как разрешение не исполнения, а поиска в каталоге. Таким образом, каталог с режимом rwxr-xr-x позволяет своему владельцу читать, изменять каталог, а также искать в нем файлы, а всем остальным пользователям разрешает только читать каталог и искать в нем файлы, но не создавать в нем новые файлы и не удалять файлы из этого каталога.
У специальных файлов, соответствующих устройствам ввода-вывода, есть те же самые биты защиты. Благодаря этому для ограничения доступа к устройствам ввода-вывода может использоваться тот же самый механизм. Например, владельцем специального файла принтера /dev/lp может быть суперпользователь (root) или специальный пользователь — демон принтера. При этом режим доступа к файлу может быть установлен
равным rw--------- , чтобы все остальные пользователи не могли напрямую обращаться
к принтеру. В противном случае при одновременной печати на принтере из нескольких процессов получился бы полный хаос.
Тот факт, что файлом /dev/lp владеет демон и этот файл имеет режим доступа rw----------- ,
означает, что больше никто не может использовать принтер. Такой способ, конечно, позволяет множеству невинных деревьев избежать преждевременной смерти, однако время от времени пользователям бывает необходимо что-то напечатать. В действительности существует более общая проблема управляемого доступа ко всем устройствам ввода-вывода и другим системным ресурсам.
Эта проблема была решена с помощью добавления к перечисленным выше 9 битам нового бита защиты, бита SETUID.
Когда выполняется программа с установленным битом SETUID, то рабочим UID (effective UID) этого процесса становится не UID вызвавшего его пользователя, а UID владельца исполняемого файла. Когда процесс пытается открыть файл, то проверяется его рабочий UID, а не действительный UID. Таким образом, если программой, обращающейся к принтеру, будет владеть демон с установленным битом SETUID, то любой пользователь сможет запустить ее и получить полномочия демона (например, права доступа к /dev/lp), но только для запуска этой программы (которая может ставить задания в очередь на принтер).В операционной системе UNIX есть множество важных программ, владельцем которых является суперпользователь, но у них установлен бит SETUID. Например, программе passwd, позволяющей пользователям менять свои пароли, требуется доступ на запись в файл паролей. Если разрешить изменять этот файл кому угодно, то ничего хорошего не получится. Вместо этого есть программа, владельцем которой выступает root, и у файла этой программы установлен бит SETUID. Хотя у этой программы есть полный доступ к файлу паролей, она изменит только пароль вызвавшего ее пользователя и не даст доступа к остальному содержимому файла.
Помимо бита SETUID есть также еще и бит SETGID, который работает аналогично и временно предоставляет пользователю рабочий GID программы. Однако на практике этот бит используется редко.
10.7.2.
Еще по теме Фундаментальные концепции:
- 29. Концепция символического интеракционизма. Концепция управления впечатлениями
- НАУКА ФУНДАМЕНТАЛЬНАЯ
- Постановка фундаментальных вопросов
- Правило фундаментальности.
- Правило фундаментальности.
- ФУНДАМЕНТАЛЬНЫЙ МЕТОД.
- НЛП целиком построено на двух фундаментальных принципах:
- § 1. ФУНДАМЕНТАЛЬНАЯ (ОБЩАЯ) СОЦИОЛОГИЧЕСКАЯ ТЕОРИЯ КАК СУБЪЕКТ ПРИЛОЖЕНИЯ
- 52. Аномическая концепция девиации Опираясь на идею аномии, Роберт Мертон разработал аномическую концепцию девиации.
- Я-КОНЦЕПЦИЯ
- КОНЦЕПЦИЯ САМООРГАНИЗАЦИИ
- 2.1. Методологические концепции
- КОНЦЕПЦИЯ ДИСПОЗИЦИОННАЯ