Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

29 - Аутентификация в Linux. Система PAM кратко

Лекция



Сразу хочу сказать, что здесь никакой воды про аутентификация в linux, и только нужная информация. Для того чтобы лучше понимать что такое аутентификация в linux, pam , настоятельно рекомендую прочитать все из категории Операционная система LINUX.

Linux - это многопользовательская среда и чтобы пользователь мог начать работу в системе ему нужно пройти процедуру аутентификации. PAM (Pluggable Authentication Modules) - это система (механизм), которая берет на себя работу по реализации процедур аутентификации. До появления PAM, разработчикам программ, которые были так или иначе связаны с аутентификацией, приходилось подстраивать свою программу под существующие механизмы аутентификации. Соответственно если менялись механизмы аутентификации, значит нужно было менять и программы которые использовали их. Поэтому была разработана система PAM, которая является “прослойкой” между программами и механизмами аутентификации. То есть теперь программы аутентификации (например, программа login) должны всего лишь уметь работать с системой PAM. Программа передает PAM параметры (например логин и пароль) и ее (программу) уже не “интересует” какой способ аутентификации реализован в системе - аутентификация по паролу или смарт-карте или другой способ. Дальше работает PAM и возвращает программе или успех или отказ.

Библиотеки PAM или Pluggable Authentication Modules - это набор компонентов, предоставляющих программный интерфейс для авторизации пользователей в Linux. Возможно вы уже сталкивались с PAM, когда хотели запустить какую либо графическую программу от имени суперпользователя без использования sudo. Но применение этих библиотек намного шире. Они используются утилитой login и менеджером входа gdm при входе в системе, утилитой ssh при удаленном подключении по SSH, а также другими службами где нужна аутентификация.

Этот механизм появился примерно в 1997 году и с тех пор дошел до нашего времени практически неизменным. Конечно, были дописаны новые модули, но суть работы осталась такая же как изначально. В этой статье мы рассмотрим как выполняется настройка PAM в Linux.

Посмотрим на систему PAM подробнее. Основные функции, или действия, или задачи которые выполняет система PAM - разбиты на четыре группы которые имеют определенные названия:

  • группа auth - это действия связанные непосредственно с аутентификацией. То есть действия или функции которые позволяют определить, что вы это вы. Это может быть аутентификация по паролю, по смарт-карте, биометрическая аутентификация (отпечаток пальца и т.д.) и другие.
  • группа account - это действия связанные с управлением учетными записями. Например, даже если вы аутентифицировались в системе, то вашей учетной записи можно поставить запрет на работу в определенное время суток. Или разрешить заходить в консольном режиме, но запретить заходить в графическом режиме. И т.д.
  • группа session - действия этой группы осуществляют выделение пользователю необходимых для работы ресурсов. Самый простой пример - это разрешение на монтирование каталогов.
  • группа password - действия, которые реализуют изменение аутентификационных данных пользователя. Чаще всего это действия по управлению паролями пользователя.

Все эти действия или процедуры (функции) реализованы в виде отдельных модулей, которые расположены в каталоге /lib/security/. То есть можно сказать, есть модули группы auth, модули группы account и т.д. Соответственно система PAM является модульной и если вам необходимо реализовать биометрическую аутентификацию, то необходимо просто установить модуль, которых может это процедуру выполнить.

Основной конфигурационный файл системы PAM - это файл /etc/pam.conf. Кроме файла /etc/pam.conf, настройки PAM хранятся в файлах каталога /etc/pam.d/. Внутри каталога находятся текстовые файлы которые содержат в себе последовательность действий (некий алгоритм) для программ которые используют PAM. Например, файл /etc/pam.d/login содержит алгоритм работы системы PAM для программы login, а файл/etc/pam.d/passwd для программы passwd.

29 - Аутентификация в Linux. Система PAM

Рассмотрим сначала формат файла /etc/pam.conf. Об этом говорит сайт https://intellect.icu . Файл состоит из строк. Файл может состоять из одной строки, а может из нескольких строк складываясь в цепочку последовательных действий. Каждая строка описывает одно правило или один шаг такой цепочки (алгоритма). Строка состоит из четырех полей. Первое поле это имя программы к которой относится данный шаг. Второе поле, это тип действия (auth, account, session, password). Третье поле это поле в котором задается поведение системы PAM после завершения этого шага на этом шаге алгоритма (чуть ниже остановимся подробнее на этом вопросе). Четвертое поле - это имя файла модуля. Также в строке могут присутствовать некоторые параметры передаваемые модулю.

Структура файлов находящихся в каталоге /etc/pam.d/, такая же. Отличие только в отсутствии первого поля - имени. Так как имя программы берется из имени самого файла. Посмотрим на пример такого файла. Назовем егоtestpam.

1
2
3
auth sufficient pam_rootok.so
auth required pam_unix.so
account required pam_unix.so

Рассмотрим первую строку. Поле auth говорит, что первым шагом будет аутентификация. Третье поле - это модуль, который будет выполнять аутентификацию и возвращать результат выполнения. В данном примере модуль pam_rootok.so проверяет является ли учетная запись рутом (root). Если, да то будет возвращен успех (true), если нет, то будет возвращена ошибка или отказ (false). Второе поле - это реакция или влияние полученного результата на цепочку в целом.

Реакция может быть четырех типов: required, requisite, optional, sufficient. На примере строки auth sufficient pam_rootok.so рассмотрим, что означают эти значения.

Если во втором поле установлено значение requisite, то это означает, что если модуль pam_rootok.soзавершился с ошибкой, то дальнейшее выполнение файла testpam прерывается и система PAM возвращает приложению ошибку. Если модуль вернул положительные результат, то выполнение цепочки продолжается.

required похож на requisite. Если модуль pam_rootok.so завершился с ошибкой, то PAM также вернет, ошибку, но после того как будут выполнены остальные модули, то есть цепочка не прерывается. Если модуль вернул положительные результат, то выполнение цепочки продолжается.

sufficient - если модуль pam_rootok.so вернул успех, то система PAM возвращает приложению успех, и дальнейшее выполнение цепочки прерывается. Если неудача, то продолжается выполнение цепочки.

optional - этот параметр никак не влияет на ход цепочки. Указывается для тех модулей которые не выполняют никаких проверочных действий. Если в файле будут только строки с параметром optional, то PAM вернет приложению успех.

Более подробно о системе PAM и назначении той или иной библиотеки можно прочитать на сайтеhttp://kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html. Сейчас выполним небольшое практическое упражнение которое позволить лучше понять как работает система PAM и как составлять конфигурационные файлы.

Перейдите в каталог /etc/pam.d/. Скопируйте файл su в домашнюю директорию (чтобы можно было восстановить его) и удалите файл в su из директории /etc/pam.d/. Попробуйте теперь выполнить команду su в терминале чтобы перейти в режим суперпользователя. После ввода пароля система выдаст ошибку аутентификации, так как отсутствует конфигурационный файл для программы su.

Создаем файл /etc/pam.d/su и пишем в нем такую строку:

1
auth sufficient pam_permit.so

Сохраняем файл. Пробуем снова выполнить команду su, и видим, что теперь мы становимся суперпользователем без запроса пароля. Это произошло потому, что модуль pam_permit.so всегда возвращает положительный результат, sufficient тут же прерывает выполнение цепочки и система PAM возвращает положительный результат. Отредактируем файл к следующему виду:

1
2
3
auth required pam_permit.so
auth requisite pam_deny.so
auth sufficient pam_permit.so

Модуль pam_deny.so всегда возвращает ошибку. Какой будет результат? Проверьте. А если заменить requisiteна required?
Теперь напишем в файле следующее правило:

1
auth required pam_unix.so

Теперь после выполнения команды su будет запрошен пароль пользователя root. Если пароль ввести правильно, то вы станете рутом, если пароль будет неверный, то останетесь обычным пользователем. Теперь добавим в файл еще одну строку, так чтобы получились следующие правила:

1
2
auth requisite pam_wheel.so
auth required pam_unix.so

Модуль pam_wheel.so возвращает успех если учетная запись пользователя принадлежит группе wheel. Если попробовать сейчас выполнить команду su, то она тут же завершиться с ошибкой. То есть сейчас команду suсмогут выполнить только пользователи, который входят в группу wheel и знают пароль учетной записи root. Если создать группу wheel и добавить туда свою учетную запись, то команда su сработает.

Вот еще пример:

1
2
auth requisite pam_wheel.so
auth required pam_permit.so

Попробуйте ответить кто сможет успешно выполнить команду su и, что для этого нужно будет сделать?
На этом завершим практическое упражнение (не забудьте вернуть на место оригинальный файл su).

Хочу еще раз подчеркнуть, что конфигурационные файлы в каталоге /etc/pam.d/ можно создавать только для файлов которые используют систему PAM. Например, если создать файл /etc/pam.d/ls со строкой auth requisite pam_deny.so, то команда ls все равно будет выполнятся так как она не использует систему PAM. Чтобы проверить использует ли команда систему PAM можно использовать команду ldd, которой в качестве параметра передается полный путь к файлу команды. Например:

1
2
3
4
5
6
7
ldd /bin/su
linux-gate.so.1 => (0x001a5000)
libpam.so.0 => /lib/libpam.so.0 (0x0013f000)
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x001e8000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x0015e000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00eed000)
/lib/ld-linux.so.2 (0x00175000)

Команда ldd покажет какие библиотеки использует программа и если в перечне есть libpam.so.0,libpam_misc.so.0 значит программа использует систему PAM.

В завершении хочу еще упомянуть о таком файле как /etc/nsswitch.conf. Первые три строки этого файла как раз и задают какая система аутентификации будет работать в системе:

1
2
3
passwd: compat
group: compat
shadow: compat

Ключевое слово compat как раз и “говорит” о том что в качестве системы аутентификации, будет использована система PAM.

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

Вау!! 😲 Ты еще не читал? Это зря!

Пожалуйста, пиши комментарии, если ты обнаружил что-то неправильное или если ты желаешь поделиться дополнительной информацией про аутентификация в linux Надеюсь, что теперь ты понял что такое аутентификация в linux, pam и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционная система LINUX

создано: 2014-09-13
обновлено: 2021-07-20
132539



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX