Функция door_cred и информация о клиенте

Функция door_cred и информация о клиенте

На этот раз мы изменим нашу функцию servproc из листинга 15.3, добавив в нее вызов door_cred для получения информации о пользователе. В листинге 15.5 приведен текст новой процедуры сервера; функции main клиента и сервера не претерпевают изменений по сравнению с листингами 15.2 и 15.3.

Листинг 15.5. Процедура сервера, получающая информацию о клиенте

//doors/server4.c

1  #include "unpipc.h"

2  void

3  servproc(void *cookie, char *dataptr, size_t datasize,

4   door_desc_t *descptr, size_t ndesc)

5  {

6   long arg, result;

7   door_cred_t info;

8   /* получение и вывод информации о клиенте */

9   Door_cred(&info);

10  printf("euid = %ld, ruid = %ld, pid = %ld ",

11  (long) info.dc_euid, (long) info.dc_ruid, (long) info.dc_pid);

12  arg = *((long *) dataptr);

13  result = arg * arg;

14  Door_return((char *) &result, sizeof(result), NULL, 0);

15 }

Сначала мы запустим программу-клиент и увидим, что действующий и реальный идентификаторы клиента совпадают, как мы и предполагали. Затем мы сменим владельца исполняемого файла на привилегированного пользователя, установим бит SUID и запустим программу снова:

solaris % client4 /tmp/server4 77 первый запуск клиента

result: 5929

solaris % su                      вход под именем привилегированного пользователя

Password:

Sun Microsystems Inc. Sun OS 5.6 Generic August 1997

solaris # cd                     каталог, в котором находится исполняемый файл

solaris # ls –l client4

-rwxrwxr-x 1 rstevens other1 139328 Apr 13 06:02 client4

solaris # chown root client4     смена владельца на привилегированного пользователя

solaris # chmod u+s client4      включение бита SUID

solaris # ls -l client4           проверка разрешений и владельца файла

-rwsrwxr-x 1 root     other1 139328 Apr 13 06:02 client4

solaris # exit

solaris % ls -l client4

-rwsrwxr-x 1 root     other1 139328 Apr 13 06:02 client4

solaris % client4 /tmp/server477 и еще раз запускаем программу-клиент

result: 5929

Если мы посмотрим, что в это время выводил сервер, то увидим следующую картину:

solaris % server4 /tmp/server4

euid = 224, ruid = 224, pid = 3168

euid = 0, ruid = 224, pid = 3176

Действующий идентификатор пользователя при втором запуске изменился. Значение 0 означает привилегированного пользователя.

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

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

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

Наука: Информация или дух?

Из книги Журнал «Компьютерра» № 12 от 28 марта 2006 года автора Журнал «Компьютерра»

Наука: Информация или дух? Автор: Анатолий ШалытоОдин очень сильный студент на вопрос, почему он не ходил на мои лекции, ответил, что на одной лекции был, но полученной информации ему было недостаточно.Я понял, о чем идет речь, но с ним не согласился, так как на лекциях ставлю


5.1 Информация для управления

Из книги ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ автора Автор неизвестен

5.1 Информация для управления Во время разработки программного обеспечения администрации необходимо оценивать ход работы, возникающие проблемы и вероятности развития процесса. Периодические отчеты, согласно которым проверяют ход работ по графику и представляют планы


Информация о классе

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Информация о классе Класс CObject содержит два метода: GetRuntimeClass и IsKindOf, позволяющих получить информацию о классе объекта.Виртуальный метод GetRuntimeClassВиртуальный метод GetRuntimeClass возвращает указатель на структуру CRuntimeClass, описывающую класс объекта, для которого метод был


Информация

Из книги 300 лучших программ на все случаи жизни автора Леонтьев Виталий Петрович

Информация


Информация

Из книги Информация. Собственность. Интернет. Традиция и новеллы в современном праве автора Якушев Михаил Владимирович

Информация Здание нашего несколько искусственно созданного благополучия слишком легко может рухнуть, как только в один прекрасный день окажется, что при помощи всего лишь нескольких слов, таких как "информация", "энтропия", "избыточность", нельзя решить всех наших


1.6. Информация

Из книги Феномен науки. Кибернетический подход к эволюции автора Турчин Валентин Фёдорович


15.5. Функция door_cred

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

15.5. Функция door_cred Интерфейс дверей предусматривает полезную возможность получения информации о клиенте при каждом вызове. Это осуществляется функцией door_cred:#include <door.h>int door_cred(door_cred_t *cred);/* Возвращает 0 в случае успешного завершения, –1 – в случае ошибки */Структура, на


Указание сервера на клиенте BSD LPD

Из книги Сетевые средства Linux автора Смит Родерик В.

Указание сервера на клиенте BSD LPD В файле /etc/printcap содержатся определения принтеров для системы BSD LPD (printcap сокращенно означает printer capabilities — возможности принтеров). В этом файле содержатся записи для каждой очереди печати в системе, независимо от того, является ли очередь


7.1. Системная информация

Из книги Delphi. Трюки и эффекты автора Чиртик Александр Анатольевич

7.1. Системная информация Начнем с несложных примеров, позволяющих получить информацию об операционной системе, установленном на компьютере оборудовании и такие сведения реального времени, как загрузка памяти компьютера, состояние питания и т. д.Версия операционной


Информация в Интернете

Из книги Знакомьтесь: Ноутбук автора Жуков Иван

Информация в Интернете Интернет – это прежде всего колоссальный источник информации.Яндекс – наиболее популярная поисковая система, знает о существовании более миллиарда web-страниц на русском языке и может осуществлять в них поиск информации.Мировому лидеру среди


Резюме о клиенте

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

Резюме о клиенте На этом с клиентом все. Перечислим ключевые моменты, которые следует запомнить:• Клиент обычно налаживает связь с администратором ресурса с помощью вызова open() (или fopen()).• После того как запрос клиента разрешился в конкретный администратор ресурса, мы


Редакторская информация

Из книги Дело о реформе копирайта автора Энгстрём Кристиан

Редакторская информация Дело о реформе копирайта.Член Европейского парламента Кристиан Энгстром и Рик Фальквинг.Книга опубликована членом Европейского парламента от Пиратской партии Кристианом Энгстромом при поддержке от группы экологии и энергосбережения в


Информация в Internet

Из книги Операционная система UNIX автора Робачевский Андрей М.

Информация в Internet Официальный сервер UNIX (http://www.rdg.opengroup.org/unix/). В этом разделе сервера группы The Open Group, собственностью которой является зарегистрированный знак UNIX, вы можете ознакомиться с различными спецификациями, имеющими отношение к этому семейству операционных


Информация о файлах

Из книги Linux Mint и его Cinnamon. Очерки применителя автора Федорчук Алексей Викторович

Информация о файлах Наиболее универсальным средством получения практически исчерпывающей информации о файлах является команда ls. Однако для этой цели существуют и другие команды.Общая форма запуска команды ls —$ ls [options] names где в качестве аргумента names могут выступать


Информация о пакетах

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

Информация о пакетах Пакетный менеджмент начинается с поиска нужного пакета, для чего предназначена внутренняя команда search, требующая аргумента в виде ключевого слова. Поиск по ключевому слову осуществляется в именах пакетов и их кратких описаниях (т.н. резюме).