User Tools

Site Tools


использование_библиотеки_pam

Использование библиотеки PAM

Терминология PAM

Подсистемы (facility)

auth

Аутентификация. Эта подсистема, собственно говоря, реализует аутентификацию аппликанта и выяснение полномочий учётной записи.

account

Управление учётной записью. Эта подсистема обрабатывает вопросы доступности учетной записи, не связанные с аутентификацией, такие, как ограничения в доступе на основе времени суток или загрузки сервера.

session

Управление сеансом. Эта подсистема отрабатывает задачи, связанные с установлением и закрытием сеанса, такие, как учет входов пользователей.

password

Управление паролем. Эта подсистема используется для изменения ключа аутентификации, связанного с учетной записью, по причине истечения его срока действия или желания пользователя изменить его.

Управляющие флаги цепочек

required

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

sufficient

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

optional

Модуль отрабатывается, но результат выполнения игнорируется. Если все модули в цепочке помечены как optional, то удовлетворяться будут все запросы.

requisite

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

binding

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

Примеры использования

Права на команду su

$ cat /etc/pam.d/su

Приостановка регистрации пользователей

Debian/Ubuntu

root@gate:~# grep nologin /etc/pam.d/sshd
# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so
root@gate:~# cat > /etc/nologin
Please do not login now
<Ctrl-D>

FreeBSD

[gate:~] # grep nologin /etc/pam.d/sshd
account         required        pam_nologin.so
[gate:~] # cat > /var/run/nologin
Please do not login now
<Ctrl-D>

Аутентификация сервиса login через pam radius

FreeBSD

[gate:~] # cat /etc/radius.conf
auth server testing123 3 2
[gate:~] # cat /etc/pam.d/login
...
auth            sufficient      pam_radius.so           no_warn try_first_pass
auth            include         system             
...

Debian/Ubuntu

root@gate:~# apt install libpam-radius-auth freeradius-utils

root@gate:~# cat /etc/pam_radius_auth.conf
...
server testing123 3
...
root@gate:~# cat /etc/pam.d/login
...
auth       sufficient   pam_radius_auth.so
# Standard Un*x authentication.
...

Автоматическое создание домашних каталогов

Debian/Ubuntu

root@gate:~# apt install libpam-modules

root@gate:~# pam-auth-update --enable mkhomedir

root@gate:~# less /etc/pam.d/common-session
...
session    required     pam_mkhomedir.so

FreeBSD

[gate:~] # mkdir /home

freebsd10# pkg install pam_mkhomedir

[gate:~] # cat /etc/pam.d/sshd
...
# session
session         required       /usr/local/lib/pam_mkhomedir.so
...

Использование pam_ssh для сервиса login

Debian/Ubuntu

Все само пропишется, пароль ДОЛЖЕН совпадать с UNIX паролем

client1:~# apt install libpam-ssh

client1:~# grep -r ssh /etc/pam.*

client1:~# pam-auth-update

FreeBSD

[client1:~] # cat /etc/pam.d/system
...
# auth
...
auth            sufficient      pam_ssh.so              no_warn try_first_pass
auth            required        pam_unix.so             no_warn try_first_pass nullok
...
# session
session         optional        pam_ssh.so
session         required        pam_lastlog.so          no_fail
...

Использование pam_krb5 для сервиса login/xdm

Debian/Ubuntu

root@client1:~# apt install libpam-krb5

все настроится автоматически

root@client1:~# grep krb5 /etc/pam.d/*

FreeBSD

[client1:~] # cat /etc/pam.d/system
...
# auth
...
auth            sufficient      pam_krb5.so             no_warn try_first_pass
...
[client1:~] # cat /etc/pam.d/xdm
...
# auth
auth            sufficient      pam_krb5.so             no_warn try_first_pass
...

Использование pam_script

Вариант использования для автоматического создания учетных записей после аутентификации через внешний сервис

# less /etc/pam.d/common-auth
...
auth    [success=2 default=ignore]      pam_krb5.so minimum_uid=1000
auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass
...
# apt install libpam-script

# cat /etc/pam.d/common-auth
...
# here are the per-package modules (the "Primary" block)
auth    [success=2 default=ignore]      pam_krb5.so minimum_uid=1000
auth    [success=2 default=ignore]      pam_unix.so nullok_secure try_first_pass
auth    requisite                       pam_deny.so
auth    sufficient                      pam_script.so
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
...
# cat /usr/share/libpam-script/pam_script_auth
#!/bin/bash

id "$PAM_USER" &>/dev/null || useradd -m -s /bin/bash "$PAM_USER"

#echo "$PAM_USER:$PAM_AUTHTOK" | /usr/sbin/chpasswd

Вариант использования для автоматического монтирования домашнего каталога по протоколу CIFS с GSSAPI/Kerberos аутентификацией

# cat /usr/share/libpam-script/pam_script_ses_open
#!/bin/sh

MYUID=`id -u $PAM_USER`
MYGID=`id -g $PAM_USER`

cp /tmp/krb5cc_${MYUID}* /tmp/krb5cc_0

mount | grep -q /home/$PAM_USER || mount.cifs //gate.corpX.un/$PAM_USER -o rw,user,sec=krb5,vers=3.1.1,uid=$MYUID,gid=$MYGID /home/$PAM_USER/

###rm /tmp/krb5cc_0
использование_библиотеки_pam.txt · Last modified: 2023/06/20 07:34 by val