свой пароль. Имеется специальная программа
свой пароль. Имеется специальная программа /bin/passwd,
изменяющая пароли. Однако пользователь не может сделать это даже
с помощью этой программы, поскольку запись в файл /etc/passwd
запрещена. В системе UNIX эта проблема разрешается следующим
образом. При выполняемом файле может быть указано, что при его
запуске должны устанавливаться идентификаторы пользователя и/или
группы. Если пользователь запрашивает выполнение такой программы
(с помощью системного вызова exec), то для соответствующего
процесса устанавливаются идентификатор пользователя,
соответствующий идентификатору владельца выполняемого файла и/или
идентификатор группы этого владельца. В частности, при запуске
программы /bin/passwd процесс получит идентификатор
суперпользователя, и программа сможет произвести запись в файл
/etc/passwd.
И для идентификатора пользователя, и для идентификатора группы
реальный ID является истинным идентификатором, а действующий ID -
идентификатором текущего выполнения. Если текущий идентификатор
пользователя соответствует суперпользователю, то этот
идентификатор и идентификатор группы могут быть переустановлен в
любое значение системными вызовами setuid и setgid. Если же
текущий идентификатор пользователя отличается от идентификатора
суперпользователя, то выполнение системных вызовов setuid и
setgid приводит к замене текущего идентификатора истинным
идентификатором (пользователя или группы соответственно).
Как и полагается делать в многопользовательской операционной
системе, в UNIX поддерживается единообразный механизм контроля
доступа к файлам и справочникам файловой системы. Любой процесс
может получить доступ к некоторому файлу в том и только в том
случае, если права доступа, описанные при файле, соответствуют
возможностям данного процесса.
Защита файлов от несанкционированного доступа в ОС UNIX
основывается на трех фактах. Во-первых, с любым процессом,
создающим файл (или справочник), ассоциирован некоторый
уникальный в системе идентификатор пользователя, который в
Содержание Назад Вперед