Аутентификация. Эта подсистема, собственно говоря, реализует аутентификацию аппликанта и выяснение полномочий учётной записи.
Управление учётной записью. Эта подсистема обрабатывает вопросы доступности учетной записи, не связанные с аутентификацией, такие, как ограничения в доступе на основе времени суток или загрузки сервера.
Управление сеансом. Эта подсистема отрабатывает задачи, связанные с установлением и закрытием сеанса, такие, как учет входов пользователей.
Управление паролем. Эта подсистема используется для изменения ключа аутентификации, связанного с учетной записью, по причине истечения его срока действия или желания пользователя изменить его.
Если модуль возвратил положительный ответ, выполняется оставшаяся часть цепочки, запрос удовлетворяется, если никакой другой модуль не отработает отрицательно. Если же модуль возвратит отрицательный ответ, остаток цепочки тоже отрабатывается, но запрос отвергается.
Если модуль возвратит положительный ответ, и ни один из предыдущих модулей в цепочке на отработал отрицательно, то отработка цепочки немедленно прекращается, а запрос удовлетворяется. Если модуль отработал отрицательно, то результат игнорируется и цепочка отрабатывается дальше.
Модуль отрабатывается, но результат выполнения игнорируется. Если все модули в цепочке помечены как optional, то удовлетворяться будут все запросы.
Если модуль возвращает положительный ответ, выполняется оставшаяся часть цепочки, запрос удовлетворяется, если никакой другой модуль не отработает отрицательно. Если же модуль отрабатывает отрицательно, то отработка цепочки немедленно прекращается, а запрос отвергается.
Если модуль отработал успешно, и ни один из предыдущих модулей в цепочке не сработал отрицательно, то цепочка прерывается, а запрос подтверждается. Если же модуль отработает неудачно, то выполняется оставшаяся часть цепочки, однако запрос отвергается.
$ cat /etc/pam.d/su
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>
[gate:~] # grep nologin /etc/pam.d/sshd
account required pam_nologin.so
[gate:~] # cat > /var/run/nologin
Please do not login now <Ctrl-D>
[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 ...
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. ...
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
[gate:~] # mkdir /home freebsd10# pkg install pam_mkhomedir [gate:~] # cat /etc/pam.d/sshd
... # session session required /usr/local/lib/pam_mkhomedir.so ...
Все само пропишется, пароль ДОЛЖЕН совпадать с UNIX паролем
client1:~# apt install libpam-ssh client1:~# grep -r ssh /etc/pam.* client1:~# pam-auth-update
[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 ...
root@client1:~# apt install libpam-krb5
все настроится автоматически
root@client1:~# grep krb5 /etc/pam.d/*
[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 ...
# 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 #useradd -m -p "$(/usr/bin/mkpasswd -m sha-512 $PAM_AUTHTOK)" -s /bin/bash "$PAM_USER"
# 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