
- •Системные вызовы семейства exec
- •Прототипы функций (1)
- •Прототипы функций (2)
- •execl()
- •execlp()
- •execle()
- •execv()
- •execvp()
- •execve()
- •Семейство функций exec()
- •main
- •Окружение процесса
- •Переменные окружения
- •Переменные окружения
- •Системные вызовы (1)
- •Системные вызовы (2)
- •Системные вызовы (3)
- •Идентификаторы
- •euid
- •suid
- •В большинстве случаев все идентификаторы процесса, связанные с пользователями – uid, euid и
- •При выполнении exec
- •Наследование пользовательских идентификаторов
- •Файл
- •Системные вызовы
- •Программы,
- •Сигналы
- •Назначение сигналов
- •Надежные и ненадежные
- •Свойства сигналов
- •Причины отправки
- •По инициативе ядра
- •Доставка сигнала
- •Когда core-файл не
- •Диспозиция по умолчанию
- •Перехват сигнала
- •Сигналы (1)
- •Сигналы (2)
- •Сигналы (3)
- •Сигналы (4)
- •SIGPIPE
- •SIGCHLD
- •SIGUSR1, SIGUSR2
- •SIGALRM
- •Надежные сигналы
- •Множество сигналов
- •Библиотечные функции
- •Управление маской
- •Работа с сигналами
- •Работа с диспозицией
- •Структура sigaction
- •Флаги sa_flags
- •Доставка и обработка сигнала
- •Функция ядра issig() (1)
- •Функция ядра issig() (2)
- •Группы и сеансы
- •Группы и сеансы (1)
- •Группы и сеансы (2)
- •Группы и сеансы (3)
- •Системные вызовы (группы)
- •Системные вызовы (сеансы)
- •Текущие и фоновые
- •Листинг ps
- •Процессы-демоны
- •Демоны
- •init
- •Последовательность шагов (1)
- •Последовательность шагов (2)
- •Последовательность шагов (3)
- •Известные демоны

suid
Предоставляет возможность переключения euid между значениями uid и suid.

В большинстве случаев все идентификаторы процесса, связанные с пользователями – uid, euid и suid совпадают.
Если не совпадают, то это suid- программа.

При выполнении exec
Если на запускаемый исполнимый файл (не скрипт) установлен бит смены идентификатора пользователя (suid-бит), то euid и suid процесса устанавливаются в uid владельца данного файла.

Наследование пользовательских идентификаторов

Файл
-rwsr-xr-x 1 max group 3765 Jan 19 20:45 prog1
Процесс до exec
uid=579 (user), euid=579 (user), suid=579 (user)
Процесс после exec(“prog1”, …)
uid=579 (user), euid=521 (max), suid=521 (max)

Системные вызовы
int getuid(); - получить uid int geteuid(); - получить euid
int setuid(int); - установить uid,
|
euid, suid в |
одно |
значение |
int seteuid(int); - установить euid

Программы,
использующие suid-бит
su sudo passwd mount umount ping
traceroute

Сигналы

Назначение сигналов
Простейший способ межпроцессного взаимодействия.
Предназначены для информирования процесса о наступлении какого-либо события.

Надежные и ненадежные
Отправка сигнала
Доставка сигнала