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
использование_библиотеки_pam [2013/06/04 09:18]
val [Автоматическое создание домашних каталогов]
использование_библиотеки_pam [2023/06/20 07:34] (current)
val [Использование библиотеки PAM]
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)]] 
 +  * [[https://​redos.red-soft.ru/​base/​manual/​admin-manual/​safe-redos/​pam/​|Pluggable Authentication Modules (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 127: Line 136:
 [gate:~] # mkdir /home [gate:~] # mkdir /home
  
-[gate:​~] ​pkg_add -r pam_mkhomedir+freebsd10pkg install ​pam_mkhomedir
  
 [gate:~] # cat /​etc/​pam.d/​sshd [gate:~] # cat /​etc/​pam.d/​sshd
Line 137: Line 146:
 </​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 154: 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 193: 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.1370323090.txt.gz · Last modified: 2013/06/04 09:18 by val