User authorization in linux

IgorKa — Информационный ресурс

Немного обо всем и все о немногом, или практический опыт системного администратора.

Март 2010
Пн Вт Ср Чт Пт Сб Вс
« Фев Апр »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

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

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

Посмотрим на систему 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.

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

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

Рассмотрим первую строку. Поле 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 и пишем в нем такую строку:

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

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

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

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

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

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

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

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

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

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

Источник

Как создать пользователя Linux

Основу управления правами доступа в Linux и уровнем привилегий в Linux составляют именно пользователи. Изначально, еще при проектировании системы существовал пользователь root, которому позволено выполнять любые действия и другие пользователи, права которых настраиваются с помощью вступления их в группы Linux и установки прав на каталоги.

Многопользовательская архитектура, одна из первых особенностей Linux, которая существует еще с зарождения системы. В системе могут работать одновременно множество пользователей благодаря удаленному входу, а также пользователи используются для запуска определенных сервисов. В этой статье мы рассмотрим как создать пользователя linux, рассмотрим способ через терминал и в графическом интерфейсе.

Создание пользователя в Linux

Вся информация о пользователях находится в файле /etc/passwd. Мы могли бы создать пользователя linux просто добавив его туда, но так делать не следует, поскольку для этой задачи существуют специальные утилиты. Одна из таких утилит, это useradd. Рассмотрим ее подробнее.

Команда useradd

Это довольно простая команда, которая есть во всех дистрибутивах Linux. Она позволяет зарегистрировать нового пользователя или изменить информацию об уже имеющемся. Во время создания можно даже создать домашний каталог пользователя и скопировать в него системные файлы. Рассмотрим синтаксис команды:

$ useradd опции имя_пользователя

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

  • -b — базовый каталог для размещения домашнего каталога пользователя, по умолчанию /home;
  • -c — комментарий к учетной записи;
  • -d — домашний каталог, в котором будут размещаться файлы пользователя;
  • -e — дата, когда учетная запись пользователя будет заблокирована, в формате ГГГГ-ММ-ДД;
  • -f — заблокировать учетную запись сразу после создания;
  • -g — основная группа пользователя;
  • -G — список дополнительных групп;
  • -k — каталог с шаблонами конфигурационных файлов;
  • -l — не сохранять информацию о входах пользователя в lastlog и faillog;
  • -m — создавать домашний каталог пользователя, если он не существует;
  • -M — не создавать домашнюю папку;
  • -N — не создавать группу с именем пользователя;
  • -o — разрешить создание пользователя linux с неуникальным идентификатором UID;
  • -p — задать пароль пользователя;
  • -r — создать системного пользователя, не имеет оболочки входа, без домашней директории и с идентификатором до SYS_UID_MAX;
  • -s — командная оболочка для пользователя;
  • -u — идентификатор для пользователя;
  • -D — отобразить параметры, которые используются по умолчанию для создания пользователя. Если вместе с этой опцией задать еще какой-либо параметр, то его значение по умолчанию будет переопределено.

Теперь, когда вы знаете основные необходимые нам параметры утилиты мы можем перейти к разбору того, как выполняется создание нового пользователя linux. Сначала давайте посмотрим какие параметры будут применены для пользователя по умолчанию:

Как видите, по умолчанию домашний каталог пользователя будет создан в /home и будет использоваться оболочка /bin/sh. Теперь создадим минимального пользователя с минимальными настройками:

sudo useradd test

Был создан самый простой пользователь, без оболочки и пароля, а также без групп. Теперь немного усложним задачу и создадим пользователя с паролем и оболочкой /bin/bash:

sudo useradd -p password -s /bin/bash test1

Для того чтобы получать доступ к системным ресурсам пользователю нужно быть участником групп, у которых есть доступ к этим ресурсам. Дополнительные группы пользователя задаются с помощью параметра -G. Например, разрешим пользователю читать логи, использовать cdrom и пользоваться sudo:

sudo useradd -G adm,cdrom,wheel -p password -s /bin/bash test2

Также, можно установить дату, когда аккаунт пользователя будет отключен автоматически, это может быть полезно для пользователей, которые будут работать временно:

sudo useradd -G adm,cdrom,wheel -p password -s /bin/bash -e 01:01:2018 test2

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

sudo useradd -o -u 0 -g 0 -s /bin/bash newroot

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

Создание нового пользователя linux в GUI

В графическом интерфейсе системы создать нового пользователя linux еще проще. Рассмотрим окружение Gnome, хотя и в KDE тоже есть аналогичная функция. Войдите в главное меню и откройте параметры системы:

Затем откройте «Пользователи»:

Поскольку утилита запущена от имени обычного пользователя вы ничего не можете сделать. Поэтому нажмите кнопку «Разблокировать»:

Только после этого используйте кнопку со знаком плюс для создания нового пользователя Linux:

В открывшемся окне нужно заполнить все поля. Но тут намного больше ограничений, чем в методе через терминал. Вы не можете задать слишком простой пароль, а также нельзя настроить группы. Можно только указать будет ли пользователь включен в группу wheel с помощью выбора типа пользователя — администратор или обычный:

После этого создание пользователя linux завершено, новый пользователь появится в списке.

Выводы

В этой статье мы рассмотрели как создать пользователя linux с помощью терминала или в графическом интерфейсе системы. Оба способа имеют свои преимущества. Например, способ в терминале намного гибче, но в то же время графический способ дает больше контроля над процессом. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Читайте также:  Прога удаление приложений windows 10
Оцените статью