Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Использование битов setuid и setgid

2021-01-29 109
Использование битов setuid и setgid 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

 

Есть важные случаи, в которых действующая как программа должна безвозвратно изменить все три значения действительного, эффективного и сохраненного set‑user ID на ID обычного пользователя. Наиболее очевидным случаем является программа, которую вы используете (либо непосредственно, либо удаленно) каждый раз при регистрации в системе GNU/Linux или Unix. Имеется иерархия программ, как очерчено на рис. 11.1.

Рис. 11.1. От через через к shell

Код для слишком сложен, чтобы показать здесь, поскольку он имеет дело с рядом задач, не имеющих отношения к текущему обсуждению. Но мы можем очертить шаги, которые происходят во время регистрации, следующим образом:

1. является самым первым процессом. Его PID равен 1. Все другие процессы являются его потомками. Ядро вручную создает процесс 1 во время загрузки и запускает в нем. Он действует с действительным и эффективным UID, равными нулю, т.е. как.

2. читает, который, помимо прочих вещей, сообщает о том, на каких устройствах он должен запустить процесс. Для каждого такого устройства (такого, как консоль, последовательные терминалы или виртуальные консоли в системе GNU/Linux) порождает новый процесс. Этот новый процесс использует затем для запуска (от «get tty» («получить tty», т.е. терминал)). На многих системах GNU/Linux эта команда называется. Программа открывает устройство, сбрасывает его состояние и выводит приглашение ''.

3. По получении регистрационного имени выполняет. Программа ищет имя пользователя в файле паролей, запрашивает пароль и проверяет его. Если пароль подходит, процесс продолжается.

4. изменяет домашний каталог пользователя, устанавливает начальное окружение, а затем устанавливает начальный набор открытых файлов. Он закрывает дескрипторы файлов, открывает терминал и использует для копирования дескрипторов файла терминала в 0, 1 и 2. Вот откуда происходят дескрипторы уже открытых файлов стандартного ввода, стандартного вывода и стандартной ошибки.

5. Затем использует для установки дополнительного набора групп, для установки значений действительного, эффективного и сохраненного set‑group ID в соответствующее значение группы пользователя, и наконец, для установки всех трех значений действительного, эффективного и сохраненного set‑user ID в соответствующие значения для регистрирующегося пользователя. Обратите внимание, что вызов должен быть последним для того, чтобы другие два вызова завершились успешно.

6. Наконец, вызывает зарегистрированную оболочку пользователя. Оболочки в стиле Борна после этого читают файлы и, если они существуют. Затем оболочка выводит приглашение.

Обратите внимание, как один процесс меняет свою сущность от системного процесса до процесса пользователя. Каждый потомок начинается как копия. Используя, тот же самый процесс выполняет различные задания. Вызвав для перехода от к обычному пользователю, процесс в конечном счете поступает непосредственно для работы пользователя. Когда вы выходите из оболочки (посредством CTRL‑D или), процесс попросту завершается. Затем возобновляет цикл, порождая новый, который выводит новое приглашение ''.

 

ЗАМЕЧАНИЕ. Открытые файлы остаются открытыми и доступными для использования, даже после изменения процессом своих UID или GID. Таким образом, программы с setuid должны заранее открыть все нужные файлы, изменить их ID на ID действительного пользователя и продолжить оставшуюся часть работы без дополнительных привилегий

 

В табл. 11.1 приведена сводка шести стандартных функций для манипулирования значениями UID и GID.

 

Таблица 11.1. Сводка API для установки действительных и эффективных ID[120]

 

 Функция Устанавливает Постоянно Обычный пользователь Root
  E Нет Из R, E, S Любое
  E Нет Из R, E, S Любое
  Root: R,E,S Другие: E Root: да Другие: нет Из R, E Любое
  Root: R,E,S Другие: E Root: да Другие: нет Из R, E Любое
  E, может установить R Нет Из R, E Любое
  E, может установить R Нет Из R, E Любое

 

 


Поделиться с друзьями:

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...



© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.