3.5. Разрешения IPC

3.5. Разрешения IPC

При создании нового объекта IPC с помощью одной из функций getXXX, вызванной с флагом IPC_CREAT, в структуру ipc_perm заносится следующая информация (раздел 3.3):

1. Часть битов аргумента oflag задают значение поля mode структуры ipc_perm. В табл. 3.3 приведены биты разрешений для трех типов IPC (запись >>3 означает сдвиг вправо на три бита).

2. Поля cuid и cgid получают значения, равные действующим идентификаторам пользователя и группы вызывающего процесса. Эти два поля называются идентификаторами создателя.

3. Поля uid и gid структуры iрс_perm также устанавливаются равными действующим идентификаторам вызывающего процесса. Эти два поля называются идентификаторами владельца.

Таблица 3.3. Значения mode для разрешений чтения-записи IPC 

Число (восьмеричное) Очередь сообщений Семафор Разделяемая память Описание
0400 MSG_R SEM_R SHM_R Пользователь — чтение
0200 MSG_W SEM_A SHM_W Пользователь — запись
0040 MSG R>>3 SEM_R>>3 SHM_R>>3 Группа — чтение
0020 MSG_W>>3 SEM_A>>3 SHM_W>>3 Группа — запись
0004 MSG_R>>6 SEM_R>>6 SHM_R>>6 Прочие — чтение
0002 MSG_W>>6 SEM_A>>6 SHM_W>>6 Прочие — запись

Идентификатор создателя изменяться не может, тогда как идентификатор владельца может быть изменен процессом с помощью вызова функции ctlXXX для данного механизма IPC с командой IPC_SET. Три функции ctlXXX позволяют процессу изменять биты разрешений доступа (поле mode) объекта IPC.

ПРИМЕЧАНИЕ

В большинстве реализаций определены шесть констант: MSG_R, MSG_W, SEM_R, SEM_A, SHM_R и SHM_W, показанные в табл. 3.3. Константы эти определяются в заголовочных файлах <sys/msg.h>, <sys/sem.h> и <sys/shm.h>. Однако стандарт Unix 98 не требует их наличия. Суффикс А в SEM_A означает «alter» (изменение).

Тройка функций getXXX не используют стандартную маску создания файла Unix. Разрешения очереди сообщений, семафора и разделяемой памяти устанавливаются в точности равными аргументу функции.

Posix IPC не дает создателю IPC возможности изменить владельца объекта. В Posix нет аналогов команды IPC_SET. Однако в Posix IPC имя объекта принадлежит файловой системе, и потому владелец может быть изменен привилегированным пользователем с помощью команды chown.

Когда какой-либо процесс предпринимает попытку доступа к объекту IPC, производится двухэтапная проверка: первый раз при открытии файла (функция getXXX) и затем каждый раз при обращении к объекту IPC:

1. При установке доступа к существующему объекту IPC с помощью одной из функций getXXX производится первичная проверка аргумента oflag, вызывающего функцию процесса. Аргумент не должен указывать биты доступа, не установленные в поле mode структуры ipc_perm (нижний квадрат на рис. 3.2). Например, процесс-сервер может установить значение члена mode для своей очереди входящих сообщений, сбросив биты чтения для группы и прочих пользователей. Любой процесс, попытавшийся указать эти биты в аргументе oflag функции msgget, получит ошибку. Надо отметить, что от этой проверки, производимой функциями getXXX, мало пользы. Она подразумевает наличие у вызывающего процесса информации о том, к какой группе пользователей он принадлежит: он может являться владельцем файла, может принадлежать к той же группе или к прочим пользователям. Если создающий процесс сбросит некоторые биты разрешений, а вызывающий процесс попытается их установить, функция getXXX вернет ошибку. Любой процесс может полностью пропустить эту проверку, указав аргумент oflag, равный 0, если заранее известно о существовании объекта IPC.

2. При любой операции с объектами IPC производится проверка разрешений для процесса, эту операцию запрашивающего. Например, каждый раз когда процесс пытается поместить сообщение в очередь с помощью команды msgsnd, производятся нижеследующие проверки (при получении доступа последующие этапы пропускаются).

 ? Привилегированному пользователю доступ предоставляется всегда.

 ? Если действующий идентификатор пользователя совпадает со значением uid или cuid объекта IPC и установлен соответствующий бит разрешения доступа в поле mode объекта IPC, доступ будет разрешен. Под соответствующим битом разрешения доступа подразумевается бит, разрешающий чтение, если вызывающий процесс запрашивает операцию чтения для данного объекта IPC (например, получение сообщения из очереди), или бит, разрешающий запись, если процесс хочет осуществить ее.

 ? Если действующий идентификатор группы совпадает со значением gid или cgid объекта IPC и установлен соответствующий бит разрешения доступа в поле mode объекта IPC, доступ будет разрешен.

 ? Если доступ не был разрешен на предыдущих этапах, проверяется наличие соответствующих установленных битов доступа для прочих пользователей.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Взимание недоимок при помощи данных 5-метрового разрешения

Из книги Все под контролем: Кто и как следит за тобой автора Гарфинкель Симеон

Взимание недоимок при помощи данных 5-метрового разрешения Шесть лет назад семья Джонсов переехала в новый, построенный по индивидуальному проекту дом в пригороде. С того времени они пристроили еще одну комнату, построили бассейн и сделали другие изменения, не потратив и


Переосмысление разрешения

Из книги Журнал `Компьютерра` N745 автора Журнал «Компьютерра»

Переосмысление разрешения Разрешение является основой современного права. Чтобы дать разрешение, лицо должно достигнуть определенного возраста и быть вменяемым; человек в состоянии опьянения или недееспособный подругой причине не может дать юридически значимое


FERRMA: Nasтуплени высокого разрешения

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

FERRMA: Nasтуплени высокого разрешения Автор: Алекс ЭкслерНе нужно быть великим пророком, чтобы предсказать рный рост популярности сетевых накопителей (NAS) и бурл мультимедийных плееров. Также легко предположить, что последние, да с собственным накопителем, будут включать в


1.2.2. Изменение разрешения экрана

Из книги Реестр Windows автора Климов Александр

1.2.2. Изменение разрешения экрана В некоторых случаях Fedora 8 почему-то неправильно устанавливает разрешение экрана: устанавливается меньшее разрешение, чем поддерживается монитором к видеокартой. Для изменения разрешения экрана выберите команду меню


Запрещение/Разрешения на запуск программ

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Запрещение/Разрешения на запуск программ Запрещение запуска программWindows позволяет ограничить доступ к программам, кроме разрешенных в специальном списке.Для ограничения запускаемых программ надо открыть раздел HKCUSOFTWAREMicrosoftWindowsCurrentVersonPoliciesExplorerи создать там ключ


Изменение разрешения экрана

Из книги Adobe Photoshop CS3 автора Завгородний Владимир

Изменение разрешения экрана Для изменения разрешения экрана (например, на 800?600) следует внести следующие изменения в реестр: Ключ:[HKEY_LOCAL_MACHINEConfig001DisplaySettings]Значение ключа: "Resolution"="800,


Смена глубины разрешения цвета

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Смена глубины разрешения цвета Глубина разрешения цвета – это объем данных, отводимый на запись информации о цвете. Обычно эта величина исчисляется в количестве бит на каждый цветовой канал. Модели RGB и L*a*b имеют по 3 цветовых канала, CMYK – 4. Соответственно, при глубине


Разрешения служб Windows SharePoint

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Разрешения служб Windows SharePoint Службы Windows SharePoint включают 32 разрешения пользователей, которые определяют, какие действия пользователи могут выполнять на узле. Разрешения сгруппированы в уровни разрешений. По сути, каждый уровень разрешений является именованным набором


3.5. Разрешения IPC

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

3.5. Разрешения IPC При создании нового объекта IPC с помощью одной из функций getXXX, вызванной с флагом IPC_CREAT, в структуру ipc_perm заносится следующая информация (раздел 3.3):1. Часть битов аргумента oflag задают значение поля mode структуры ipc_perm. В табл. 3.3 приведены биты разрешений для


3.3.1. Изменение разрешения экрана

Из книги Цифровой журнал «Компьютерра» № 162 автора Журнал «Компьютерра»

3.3.1. Изменение разрешения экрана Начнем с изменения разрешения экрана. Щелкните правой кнопкой мыши на рабочем столе и выберите команду Разрешение экрана. В появившемся окне (рис. 3.10) вы можете выбрать экран, разрешение которого вы хотите изменить (если к системе


Как настроить Windows для работы с дисплеями высокого разрешения Андрей Васильков

Из книги 19 смертных грехов, угрожающих безопасности программ автора Ховард Майкл

Как настроить Windows для работы с дисплеями высокого разрешения Андрей Васильков Опубликовано 01 марта 2013Всё чаще на форумах можно прочесть о том, что автоматическая настройка изображения в ОС Windows приводит к визуальному дискомфорту – слишком мелкий шрифт затрудняет


Не экспортировать глобальные разрешения чтения/записи

Из книги C++ для начинающих автора Липпман Стенли

Не экспортировать глобальные разрешения чтения/записи Не делайте этого! Разрешения на доступ к файлам, устанавливающие, кто может читать и изменять файл, — очень простое понятие. Главное заключается в том, что чем больше вы предоставляете доступа к файлам вашей системы,


8.5.2. Оператор разрешения области видимости

Из книги автора

8.5.2. Оператор разрешения области видимости Имя члена пользовательского пространства дополняется поставленным спереди именем этого пространства и оператором разрешения области видимости (::). Использование неквалифицированного члена, например matrix, является ошибкой.


9.2. Три шага разрешения перегрузки

Из книги автора

9.2. Три шага разрешения перегрузки Разрешением перегрузки функции называется процесс выбора той функции из множества перегруженных, которую следует вызвать. Этот процесс основывается на указанных при вызове аргументах. Рассмотрим пример:T t1, t2;void f( int, int );void f( float, float );int