Функция 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 означает привилегированного пользователя.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Резюме о клиенте
Резюме о клиенте На этом с клиентом все. Перечислим ключевые моменты, которые следует запомнить:• Клиент обычно налаживает связь с администратором ресурса с помощью вызова open() (или fopen()).• После того как запрос клиента разрешился в конкретный администратор ресурса, мы
Информация в Internet
Информация в Internet Официальный сервер UNIX (http://www.rdg.opengroup.org/unix/). В этом разделе сервера группы The Open Group, собственностью которой является зарегистрированный знак UNIX, вы можете ознакомиться с различными спецификациями, имеющими отношение к этому семейству операционных
Информация о файлах
Информация о файлах Наиболее универсальным средством получения практически исчерпывающей информации о файлах является команда ls. Однако для этой цели существуют и другие команды.Общая форма запуска команды ls —$ ls [options] names где в качестве аргумента names могут выступать
Информация о пакетах
Информация о пакетах Пакетный менеджмент начинается с поиска нужного пакета, для чего предназначена внутренняя команда search, требующая аргумента в виде ключевого слова. Поиск по ключевому слову осуществляется в именах пакетов и их кратких описаниях (т.н. резюме).
Указание сервера на клиенте BSD LPD
Указание сервера на клиенте BSD LPD В файле /etc/printcap содержатся определения принтеров для системы BSD LPD (printcap сокращенно означает printer capabilities — возможности принтеров). В этом файле содержатся записи для каждой очереди печати в системе, независимо от того, является ли очередь
Информация
Информация Здание нашего несколько искусственно созданного благополучия слишком легко может рухнуть, как только в один прекрасный день окажется, что при помощи всего лишь нескольких слов, таких как "информация", "энтропия", "избыточность", нельзя решить всех наших
15.5. Функция door_cred
15.5. Функция door_cred Интерфейс дверей предусматривает полезную возможность получения информации о клиенте при каждом вызове. Это осуществляется функцией door_cred:#include <door.h>int door_cred(door_cred_t *cred);/* Возвращает 0 в случае успешного завершения, –1 – в случае ошибки */Структура, на
7.1. Системная информация
7.1. Системная информация Начнем с несложных примеров, позволяющих получить информацию об операционной системе, установленном на компьютере оборудовании и такие сведения реального времени, как загрузка памяти компьютера, состояние питания и т. д.Версия операционной
Информация в Интернете
Информация в Интернете Интернет – это прежде всего колоссальный источник информации.Яндекс – наиболее популярная поисковая система, знает о существовании более миллиарда web-страниц на русском языке и может осуществлять в них поиск информации.Мировому лидеру среди
Информация о классе
Информация о классе Класс CObject содержит два метода: GetRuntimeClass и IsKindOf, позволяющих получить информацию о классе объекта.Виртуальный метод GetRuntimeClassВиртуальный метод GetRuntimeClass возвращает указатель на структуру CRuntimeClass, описывающую класс объекта, для которого метод был
5.1 Информация для управления
5.1 Информация для управления Во время разработки программного обеспечения администрации необходимо оценивать ход работы, возникающие проблемы и вероятности развития процесса. Периодические отчеты, согласно которым проверяют ход работ по графику и представляют планы
Наука: Информация или дух?
Наука: Информация или дух? Автор: Анатолий ШалытоОдин очень сильный студент на вопрос, почему он не ходил на мои лекции, ответил, что на одной лекции был, но полученной информации ему было недостаточно.Я понял, о чем идет речь, но с ним не согласился, так как на лекциях ставлю
Редакторская информация
Редакторская информация Дело о реформе копирайта.Член Европейского парламента Кристиан Энгстром и Рик Фальквинг.Книга опубликована членом Европейского парламента от Пиратской партии Кристианом Энгстромом при поддержке от группы экологии и энергосбережения в