А. Робачевский - Операционная система UNIX (1114671), страница 9
Текст из файла (страница 9)
Ус!тановка флагов SUID и SGID изменяет это правило, назначая права дос!тупа исходя из прав доступа владельца файла. Таким образом, запущенныйисполняемый файл, которым владеет суперпользователь, получает неогра!ниченные права доступа к системным ресурсам, независимо от того, ктоего запустил. При этом установка SUID приведет к наследованию правфайла, а установка SGID — владельца!группы.В качестве примера использования этого свойства рассмотрим утилитупозволяющую пользователю изменить свой пароль. Очевидно,что изменение пароля должно привести к изменению содержимого опре!деленных системных файлов (файла пароля /etc/passwd или /etc/shadow,или базы данных пользователей, если используется дополнительная защи!та системы).
Понятно, что предоставление права на запись в эти файлывсем пользователям системы является отнюдь не лучшим решением. Уста!новка SUID для программы(точнее, на файл—исполняемый файл утилитыпозволяет изящно разрешить этопротиворечие. Поскольку владельцем файлаявляется су!Следует оговориться, что если программа в процессе выполнения запускает другие задачи,то они будут наследовать ее права доступа.
Поэтому устанавливать флаги SUID и SGIDследует с большой осторожностью и только для программ, которые не имеют возможно!сти запуска произвольных задач.www.books-shop.comФайлы и файловая системаперпользователь (его имя в системе — root), то кто бы ни запустил утилитуна выполнение, во время работы данной программы он временнополучает права суперпользователя, т. е. может производить запись в сис!темные файлы, защищенные от остальных пользователей.$!r!sr!sr!x3 rootsys15688 Oct 25 1995 / u s r / b i n / p a s s w d *Понятно, что требования по безопасности для такой программы должныбыть повышены. Утилитадолжна производить изменение паролятолько пользователя, запустившего ее, и не позволять никакие другие опе!рации (например, вызов других программ).Блокирование файлов позволяет устранить возможность конфликта, когдадве или более задачи одновременно работают с одним и тем же файлом.
Кэтому вопросу мы вернемся в главе 4.Однако вернемся к обсуждению дополнительных атрибутов для каталогов(табл.Таблица 1.4. Дополнительные атрибуты для каталоговКодtSticky bitsSetSGIDПозволяет пользователю удалять только файлы, кото%рыми он владеет или имеет права на записьПозволяет изменить правило установки владельца%группы создаваемых файлов, аналогично реализован%ному в BSD UNIXПри обсуждении прав доступа отмечалось, что предоставление права назапись в каталог дает достаточно большие полномочия. Имея такое право,пользователь может удалить из каталога любой файл, даже тот, владельцемкоторого он не является и в отношении которого не имеет никаких прав.Установка атрибута Sticky bit для каталога позволяет установить дополни!тельную защиту файлов, находящихся в каталоге. Из такого каталога поль!зователь может удалить только файлы, которыми он владеет, или на кото!рые он имеет явное право доступа на запись, даже при наличии права назапись в каталог.
Примером может служить каталог /tmp, который являет!ся открытым на запись для всех пользователей, но в котором может ока!заться нежелательной возможность удаления пользователем чужих времен!ных файлов.Атрибут SGID также имеет иное значение для каталогов.
При установкеэтого атрибута для каталога вновь созданные файлы этого каталога будутнаследовать владельца!группу покаталога. Таким обра!зом для UNIX версии System V удается имитировать поведение системверсии BSD, для которых такое правило наследования действует по умол!чанию.www.books-shop.comГлава 1. Работа в операционной системе UNIX38Посмотреть наличие дополнительных атрибутов можно с помощью под!робного списка файлов:$!1!r!sr!sr!x5 syssys367Dec 193sys15688Oct 25rootТаблицаОперация20:291995Операции изменения атрибутов файлаКоманда/системный Кому разрешеновызовИзменение прав доступа chmod(1)Изменение дополнитель% chmod(1)ного атрибута Sticky bitИзменение дополнитель%ного атрибутавладелецьзовател ьвладелец, причем еготак%же должен совпадать с иден%тификатором группы файлаПроцессыПроцессы в операционной системе UNIX играют ключевую роль.
От оп!тимальной настройки подсистемы управления процессами и числа одно!временно выполняющихся процессов зависит загрузка ресурсов процессо!ра, что в свою очередь имеет непосредственное влияние на производи!тельность системы в целом. Ядро операционной системы предоставляетзадачам базовый набор услуг, определяемый интерфейсом системных вы!зовов. К ним относятся основные операции по работе с файлами, управ!ление процессами и памятью, поддержка межпроцессного взаимодействия.Дополнительные функциональные возможности системы, т. е.
услуги, ко!торые она предоставляет пользователям, определяются активными процес!сами. От того, какие процессы выполняются в вашей системе, зависит,является ли она сервером базы данных или сервером сетевого доступа,средством проектирования или вычислительным сервером. Даже так назы!ваемые уровни выполнения системы (run levels), которые мы рассмотримпозже, представляют собой удобный способ определения группы выпол!няющихся процессов и, соответственно, функциональности системы.Программы и процессыОбычно программой называют совокупность файлов, будь то набор исход!ных текстов, объектных файлов или собственно выполняемый файл. Длятого чтобы программа могла быть запущена на выполнение, операционнаяwww.books-shop.comПроцессысистема сначала должна создать окружение или среду выполнения задачи,куда относятся ресурсы памяти, возможность доступа к устройствам вво!да/вывода и различным системным ресурсам, включая услуги ядра.Это окружение (среда выполнения задачи) получило название процесса.Мы можем представить процесс как совокупность данных ядра системы,необходимых для описания образа программы в памяти и управления еевыполнением.
Мы можем также представить процесс как программу в ста!дии ее выполнения, поскольку все выполняющиеся программы представ!лены в UNIX в виде процессов. Процесс состоит из инструкций, выпол!няемых процессором, данных и информации о выполняемой задаче, такойкак размещенная память, открытые файлы и статус процесса.В то же время не следует отождествлять процесс с программой хотя быпотому, что программа может породить более одного процесса. Простей!шие программы, например, командаили cat(l), при выполнениипредставлены только одним процессом. Сложные задачи, например сис!темные серверы (печати, FTP, Telnet), порождают в системе несколькоодновременно выполняющихся процессов.Операционная система UNIX является многозадачной.
Это значит, чтоодновременно может выполняться несколько процессов, причем частьпроцессов могут являться образцами одной программы.Выполнение процесса заключается в точном следовании набору инструк!ций, который никогда не передает управление набору инструкций другогопроцесса. Процесс считывает и записывает информацию в раздел данныхи в стек, но ему недоступны данные и стеки других процессов.В то же время процессы имеют возможность обмениваться друг с другомданными с помощью предоставляемой UNIX системой межпроцессноговзаимодействия. В UNIX существует набор средств взаимодействия междупроцессами, таких как сигналы (signals), каналы (pipes), разделяемая па!мять (shared memory), семафоры (semaphores), сообщения (messages) ифайлы, но в остальном процессы изолированы друг от друга.Типы процессовСистемные процессыСистемные процессы являются частью ядра и всегда расположены в опе!ративной памяти.
Системные процессы не имеют соответствующих импрограмм в виде исполняемых файлов и запускаются особым образом приинициализации ядра системы. Выполняемые инструкции и данные этихпроцессов находятся в ядре системы, таким образом они могут вызыватьфункции и обращаться к данным, недоступным для остальных процессов.Системными процессами являются: shed (диспетчер свопинга), vhand (дис!петчер страничного замещения),(диспетчер буферного кэша) иȾɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.com40Глава 1. Работа в операционнойUNIXkmadaemon (диспетчер памяти ядра).
К системным процессам следует от!нести ink, являющийся прародителем всех остальных процессов в UNIX.Хотя init не является частью ядра, и его запуск происходит из исполняе!мого файла (/etc/init), его работа жизненно важна для функционированиявсей системы в целом.ДемоныДемоны — это неинтерактивные процессы, которые запускаются обычнымобразом — путем загрузки в память соответствующих им программ(исполняемых файлов), и выполняются в фоновом режиме. Обычно демо!ны запускаются при инициализации системы (но после инициализацииядра, подробнее см. главу 3) и обеспечивают работу различных подсистемUNIX: системы терминального доступа, системы печати, системы сетевогодоступа и сетевых услуг и т. п. Демоны не связаны ни с одним пользова!тельским сеансом работы и не могут непосредственно управляться пользо!вателем.