русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Идентификаторы пользователя и группы пользователей


Дата добавления: 2014-11-28; просмотров: 1213; Нарушение авторских прав


С каждым выполняемым процессом в ОС UNIX® связываются реальный идентификатор пользователя (real user ID), действующий идентификатор пользователя (effective user ID) и сохраненный идентификатор пользователя (saved user ID). Все эти идентификаторы устанавливаются с помощью системного вызова setuid, который можно выполнять только в режиме суперпользователя. Аналогично, с каждым процессом связываются три идентификатора группы пользователей - real group ID, effective group ID и saved group ID. Эти идентификаторы устанавливаются привилегированным системным вызовом setgid.

При входе пользователя в систему программа login проверяет, что пользователь зарегистрирован в системе и знает правильный пароль (если он установлен), образует новый процесс и запускает в нем требуемый для данного пользователя shell. Но перед этим login устанавливает для вновь созданного процесса идентификаторы пользователя и группы, используя для этого информацию, хранящуюся в файлах /etc/passwd и /etc/group. После того, как с процессом связаны идентификаторы пользователя и группы, для этого процесса начинают действовать ограничения для доступа к файлам. Процесс может получить доступ к файлу или выполнить его (если файл содержит выполняемую программу) только в том случае, если хранящиеся при файле ограничения доступа позволяют это сделать. Связанные с процессом идентификаторы передаются создаваемым им процессам, распространяя на них те же ограничения. Однако в некоторых случаях процесс может изменить свои права с помощью системных вызовов setuid и setgid, а иногда система может изменить права доступа процесса автоматически.

Рассмотрим, например, следующую ситуацию. В файл /etc/passwd запрещена запись всем, кроме суперпользователя (суперпользователь может писать в любой файл). Этот файл, помимо прочего, содержит пароли пользователей и каждому пользователю разрешается изменять свой пароль. Имеется специальная программа /bin/passwd, изменяющая пароли. Однако пользователь не может сделать это даже с помощью этой программы, поскольку запись в файл /etc/passwd запрещена. В системе UNIX® эта проблема разрешается следующим образом. При выполняемом файле может быть указано, что при его запуске должны устанавливаться идентификаторы пользователя и/или группы. Если пользователь запрашивает выполнение такой программы (с помощью системного вызова exec), то для соответствующего процесса устанавливаются идентификатор пользователя, соответствующий идентификатору владельца выполняемого файла и/или идентификатор группы этого владельца. В частности, при запуске программы /bin/passwd процесс получит идентификатор суперпользователя, и программа сможет произвести запись в файл /etc/passwd.



И для идентификатора пользователя, и для идентификатора группы реальный ID является истинным идентификатором, а действующий ID - идентификатором текущего выполнения. Если текущий идентификатор пользователя соответствует суперпользователю, то этот идентификатор и идентификатор группы могут быть переустановлены в любое значение системными вызовами setuid и setgid. Если же текущий идентификатор пользователя отличается от идентификатора суперпользователя, то выполнение системных вызовов setuid и setgid приводит к замене текущего идентификатора истинным идентификатором (пользователя или группы соответственно).

PAM

Подключаемые модули аутентификации (Pluggable Authentication Modules, РАМ) были разработаны компанией Sun в качестве гибкого средства аутентификации пользователей Долгие годы под аутентификацией в среде UNIX® подразумевалось сопоставление регис- рационных данных пользователей с их записями в файле /etc/passwd. Возникшая позднее необходимость в усилении защиты и поддержке большего разнообразия средств аутентификации (например, интеллектуальных карточек) потребовала более гибкого подхода.

Механизм РАМ включен в Red Hat, SuSE и Debian и не имеет отношения к текущей реализации стандарта РАМ компании Sun. Концепция проста: программам, выполняющим аутентификацию, достаточно "знать" лишь о том, что имеется некий модуль, кото-рый проведет аутентификацию за них. Система конфигурируется таким образом, чтобы модули можно было добавлять, удалять и перенастраивать в любое время. Вовсе не обязательно, чтобы тот или иной модуль был скомпонован (или даже существовал) на этапе компиляции утилиты. Благодаря этому модули РАМ стали удобным средством системного администрирования.

Модули РАМ настраиваются посредством файлов каталога /etc/pam.d. Для каждой службы в этом каталоге содержится отдельный файл с записями следующего вида:

тип_модуля управляющий_флаг путь_к_модулю аргументы

Поле тип_модуля может иметь значения auth, account, session или password. Модуль типа auth идентифицирует пользователя и может предоставлять ему право группового доступа. Модуль типа account выполняет действия, не связанные с аутентификацией, например предоставляет доступ в зависимости от времени суток. Действия, которые необходимо выполнить до или после того, как пользователь получит доступ к требуемой службе реализуются модулем типа session. Наконец, модуль типа password используется, когда пользователь должен ввести аутентификационную информацию (например, пароль).

Поле управляющий_флаг имеет четыре возможных значения: required, requisite sufficient и optional. Чаще всего используются флаги required и optional. Пер-вый из них указывает на то, что для успешного продолжения работы модуль должен до-биться положительного результата. Второй флаг говорит о том, что результат работы мо-дуля несущественен.

В третьем и четвертом полях указываются путь к динамически загружаемому файлу модуля и аргументы его вызова. Если первым символом третьего поля является косая черта (/), то путь считается абсолютным. В противном случае содержимое поля добавляется к стандартному имени каталога: /lib/security.

Например, чтобы позволить команде passwd осуществлять проверку паролей с использованием модуля РАМ библиотеки crack, добавьте следующие записи в файл

/etc/pam.d/passwd:

password required pam_cracklib.so retry=3 password required pam_pwdb.so use_authtok

При наличии таких строк система будет сверять предлагаемые пользователями пароли со словарем и правилами утилиты crack (необходимо, чтобы присутствовала системная биб- лиотека libcrack и системный словарь /usr/lib/cracklib_dict). Аргумент retry=3 указывает на то, что пользователю будут даны три попытки для ввода правильного пароля. Строка с аргу- ментом use_authtok соединяет друг с другом различные уровни модуля password. Существуют десятки модулей РАМ. Различные модули и документацию к ним можно по адресу www.kernel.org/pub/linux/libs/pam



<== предыдущая лекция | следующая лекция ==>
Принципы защиты | Безопасность файлов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.551 сек.