User Tools

Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
использование_библиотеки_pam [2013/06/04 08:46]
val
использование_библиотеки_pam [2023/06/15 14:27]
val [Использование pam_script]
Line 1: Line 1:
 ====== Использование библиотеки PAM ====== ====== Использование библиотеки PAM ======
-[[http://​www.freebsd.org/​doc/​ru/​articles/​pam/​index.html]] 
  
-[[http://​www.ibm.com/​developerworks/​ru/​library/​l-pam/​index.html]]+  * [[http://​www.freebsd.org/​doc/​ru/​articles/​pam/​index.html|FreeBSD Handbook: Подключаемые Модули Аутентификации (PAM)]] 
 +  * [[http://​www.ibm.com/​developerworks/​ru/​library/​l-pam/​index.html|IBM: Основы и настройка PAM]]
  
 +===== Терминология PAM =====
  
 +==== Подсистемы (facility) ====
  
-===== Терминология PAM ===== +=== auth ===
- +
-==== auth ====+
  
 Аутентификация. Эта подсистема,​ собственно говоря,​ реализует аутентификацию аппликанта и выяснение полномочий учётной записи. Аутентификация. Эта подсистема,​ собственно говоря,​ реализует аутентификацию аппликанта и выяснение полномочий учётной записи.
  
-==== account ​====+=== account ===
  
 Управление учётной записью. Эта подсистема обрабатывает вопросы доступности учетной записи,​ не связанные с аутентификацией,​ такие, как ограничения в доступе на основе времени суток или загрузки сервера. Управление учётной записью. Эта подсистема обрабатывает вопросы доступности учетной записи,​ не связанные с аутентификацией,​ такие, как ограничения в доступе на основе времени суток или загрузки сервера.
  
-==== session ​====+=== session ===
  
 Управление сеансом. Эта подсистема отрабатывает задачи,​ связанные с установлением и закрытием сеанса,​ такие, как учет входов пользователей. Управление сеансом. Эта подсистема отрабатывает задачи,​ связанные с установлением и закрытием сеанса,​ такие, как учет входов пользователей.
  
-==== password ​====+=== password ===
  
 Управление паролем. Эта подсистема используется для изменения ключа аутентификации,​ связанного с учетной записью,​ по причине истечения его срока действия или желания пользователя изменить его. Управление паролем. Эта подсистема используется для изменения ключа аутентификации,​ связанного с учетной записью,​ по причине истечения его срока действия или желания пользователя изменить его.
  
-==== binding ==== +==== Управляющие флаги цепочек ​====
- +
-Если модуль отработал успешно, ​и ни один из предыдущих модулей в цепочке не сработал отрицательно,​ то цепочка прерывается,​ а запрос подтверждается. Если же модуль отработает неудачно,​ то выполняется оставшаяся часть цепочки, однако запрос отвергается.+
  
-==== required ​====+=== required ===
  
 Если модуль возвратил положительный ответ, выполняется оставшаяся часть цепочки,​ запрос удовлетворяется,​ если никакой другой модуль не отработает отрицательно. Если же модуль возвратит отрицательный ответ, остаток цепочки тоже отрабатывается,​ но запрос отвергается. Если модуль возвратил положительный ответ, выполняется оставшаяся часть цепочки,​ запрос удовлетворяется,​ если никакой другой модуль не отработает отрицательно. Если же модуль возвратит отрицательный ответ, остаток цепочки тоже отрабатывается,​ но запрос отвергается.
  
-==== requisite ==== +=== sufficient ===
- +
-Если модуль возвращает положительный ответ, выполняется оставшаяся часть цепочки,​ запрос удовлетворяется,​ если никакой другой модуль не отработает отрицательно. Если же модуль отрабатывает отрицательно,​ то отработка цепочки немедленно прекращается,​ а запрос отвергается. +
- +
-==== sufficient ​====+
  
 Если модуль возвратит положительный ответ, и ни один из предыдущих модулей в цепочке на отработал отрицательно,​ то отработка цепочки немедленно прекращается,​ а запрос удовлетворяется. Если модуль отработал отрицательно,​ то результат игнорируется и цепочка отрабатывается дальше. Если модуль возвратит положительный ответ, и ни один из предыдущих модулей в цепочке на отработал отрицательно,​ то отработка цепочки немедленно прекращается,​ а запрос удовлетворяется. Если модуль отработал отрицательно,​ то результат игнорируется и цепочка отрабатывается дальше.
  
-==== optional ​====+=== optional ===
  
 Модуль отрабатывается,​ но результат выполнения игнорируется. Если все модули в цепочке помечены как optional, то удовлетворяться будут все запросы. Модуль отрабатывается,​ но результат выполнения игнорируется. Если все модули в цепочке помечены как optional, то удовлетворяться будут все запросы.
 +
 +=== requisite ===
 +
 +Если модуль возвращает положительный ответ, выполняется оставшаяся часть цепочки,​ запрос удовлетворяется,​ если никакой другой модуль не отработает отрицательно. Если же модуль отрабатывает отрицательно,​ то отработка цепочки немедленно прекращается,​ а запрос отвергается.
 +
 +=== binding ===
 +
 +Если модуль отработал успешно,​ и ни один из предыдущих модулей в цепочке не сработал отрицательно,​ то цепочка прерывается,​ а запрос подтверждается. Если же модуль отработает неудачно,​ то выполняется оставшаяся часть цепочки,​ однако запрос отвергается.
  
 ===== Примеры использования ===== ===== Примеры использования =====
  
-==== Приостановка регистрации пользователей ====+==== Права ​на команду su ===
  
-=== FreeBSD ===+<​code>​ 
 +$ cat /​etc/​pam.d/​su 
 +</​code>​
  
 +==== Приостановка регистрации пользователей ====
 +
 +=== Debian/​Ubuntu ===
 <​code>​ <​code>​
-[gate:~# grep nologin /​etc/​pam.d/​sshd+root@gate:~# grep nologin /​etc/​pam.d/​sshd
 </​code><​code>​ </​code><​code>​
-account ​        ​required ​       pam_nologin.so+# Disallow non-root logins when /​etc/​nologin exists. 
 +account ​   required ​    ​pam_nologin.so
 </​code><​code>​ </​code><​code>​
-[gate:~# cat > /var/run/nologin+root@gate:~# cat > /etc/nologin
 </​code><​code>​ </​code><​code>​
 Please do not login now Please do not login now
Line 61: Line 69:
 </​code>​ </​code>​
  
-=== Ubuntu ​===+=== FreeBSD ​=== 
 <​code>​ <​code>​
-root@gate:~# grep nologin /​etc/​pam.d/​sshd+[gate:~# grep nologin /​etc/​pam.d/​sshd
 </​code><​code>​ </​code><​code>​
-# Disallow non-root logins when /​etc/​nologin exists. +account ​        ​required ​       pam_nologin.so
-account ​   required ​    ​pam_nologin.so+
 </​code><​code>​ </​code><​code>​
-root@gate:~# cat > /etc/nologin+[gate:~# cat > /var/run/nologin
 </​code><​code>​ </​code><​code>​
 Please do not login now Please do not login now
 <​Ctrl-D>​ <​Ctrl-D>​
 </​code>​ </​code>​
-==== Аутентификация с использованием RADIUS сервера ==== 
  
-[[Сервис ​FreeRADIUS]]+==== Аутентификация сервиса login через pam radius ====
  
-=== Аутентификация сервиса login через pam radius ===+  * [[Сервис ​FreeRADIUS]]
  
-== FreeBSD ==+=== FreeBSD ​===
 <​code>​ <​code>​
 [gate:~] # cat /​etc/​radius.conf [gate:~] # cat /​etc/​radius.conf
Line 93: Line 100:
 </​code>​ </​code>​
  
-== Ubuntu ==+=== Debian/Ubuntu ​===
 <​code>​ <​code>​
-root@gate:​~#​ apt-get install libpam-radius-auth freeradius-utils+root@gate:​~#​ apt install libpam-radius-auth freeradius-utils
  
 root@gate:​~#​ cat /​etc/​pam_radius_auth.conf root@gate:​~#​ cat /​etc/​pam_radius_auth.conf
Line 113: Line 120:
 ==== Автоматическое создание домашних каталогов ==== ==== Автоматическое создание домашних каталогов ====
  
-=== Ubuntu ===+=== Debian/Ubuntu ===
 <​code>​ <​code>​
-root@gate:​~#​ apt-get install libpam-modules ​# usually installed+root@gate:​~#​ apt install libpam-modules
  
-root@gate:​~# ​cat /etc/pam.d/sshd+root@gate:​~# ​pam-auth-update --enable mkhomedir 
 + 
 +root@gate:​~#​ less /etc/pam.d/common-session
 </​code><​code>​ </​code><​code>​
 ... ...
Line 125: Line 134:
 === FreeBSD === === FreeBSD ===
 <​code>​ <​code>​
-[gate:~] # pkg_add -r pam_mkhomedir+[gate:~] # mkdir /home 
 + 
 +freebsd10# pkg install ​pam_mkhomedir
  
 [gate:~] # cat /​etc/​pam.d/​sshd [gate:~] # cat /​etc/​pam.d/​sshd
Line 134: Line 145:
 ... ...
 </​code>​ </​code>​
- 
 ==== Использование pam_ssh для сервиса login ==== ==== Использование pam_ssh для сервиса login ====
 +
 +=== Debian/​Ubuntu ​ ===
 +
 +Все само пропишется,​ пароль ДОЛЖЕН совпадать с UNIX паролем
 +
 +<​code>​
 +client1:~# apt install libpam-ssh
 +
 +client1:~# grep -r ssh /etc/pam.*
 +
 +client1:~# pam-auth-update
 +</​code>​
  
 === FreeBSD === === FreeBSD ===
Line 153: Line 175:
 </​code>​ </​code>​
  
-=== Ubuntu 10.04 === 
-<​code>​ 
-root@client1:​~#​ apt-get install libpam-ssh 
-</​code>​ 
-Все само пропишется,​ пароль ДОЛЖЕН совпадать с UNIX паролем 
- 
-=== Ubuntu 12.04 === 
  
-!!! Отсутствует !!! 
  
 ==== Использование pam_krb5 для сервиса login/xdm ==== ==== Использование pam_krb5 для сервиса login/xdm ====
  
-=== Ubuntu/Debian ===+=== Debian/​Ubuntu ​===
 <​code>​ <​code>​
-root@client1:​~#​ apt-get install libpam-krb5+root@client1:​~#​ apt install libpam-krb5
 </​code>​ </​code>​
  
Line 192: Line 206:
 auth            sufficient ​     pam_krb5.so ​            ​no_warn try_first_pass auth            sufficient ​     pam_krb5.so ​            ​no_warn try_first_pass
 ... ...
 +</​code>​
 +
 +==== Использование pam_script ====
 +
 +  * [[https://​github.com/​jeroennijhof/​pam_script|jeroennijhof/​pam_script]]
 +  * См. рекламный вебинар:​ [[Зачем вводить системы Linux в домен Microsoft]]
 +  * [[Зачем вводить системы Linux в домен Microsoft#​Исправления и альтернативные варианты]] - Можно поручить монтирование домашних каталогов systemd
 +
 +=== Вариант использования для автоматического создания учетных записей после аутентификации через внешний сервис ===
 +<​code>​
 +# less /​etc/​pam.d/​common-auth
 +</​code><​code>​
 +...
 +auth    [success=2 default=ignore] ​     pam_krb5.so minimum_uid=1000
 +auth    [success=1 default=ignore] ​     pam_unix.so nullok_secure try_first_pass
 +...
 +</​code><​code>​
 +# apt install libpam-script
 +
 +# cat /​etc/​pam.d/​common-auth
 +</​code><​code>​
 +...
 +# 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)
 +...
 +</​code><​code>​
 +# cat /​usr/​share/​libpam-script/​pam_script_auth
 +</​code><​code>​
 +#!/bin/bash
 +
 +id "​$PAM_USER"​ &>/​dev/​null || useradd -m -s /bin/bash "​$PAM_USER"​
 +
 +#echo "​$PAM_USER:​$PAM_AUTHTOK"​ | /​usr/​sbin/​chpasswd
 +</​code>​
 +
 +=== Вариант использования для автоматического монтирования домашнего каталога по протоколу CIFS с GSSAPI/​Kerberos аутентификацией ===
 +
 +<​code>​
 +# cat /​usr/​share/​libpam-script/​pam_script_ses_open
 +</​code><​code>​
 +#!/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
 </​code>​ </​code>​
использование_библиотеки_pam.txt · Last modified: 2023/06/20 07:34 by val