Pam: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Добавляем вызов сценария)
(Добавляем вызов сценария)
Строка 1: Строка 1:
 
==Запустить сценарий при входе пользователя в GNU/Linux с передачей в него логина и пароля==
 
==Запустить сценарий при входе пользователя в GNU/Linux с передачей в него логина и пароля==
  
===Добавляем вызов сценария===
+
===Добавляем вызов сценариев===
  
 
В одном из файлов
 
В одном из файлов

Версия 13:17, 26 декабря 2023

Запустить сценарий при входе пользователя в GNU/Linux с передачей в него логина и пароля

Добавляем вызов сценариев

В одном из файлов

/etc/pam.d/system-auth-<тут зависит от контекста, смотря какая аунентификация используется>

например, это может быть файл

/etc/pam.d/system-auth-local

добавляем строку

auth optional pam_exec.so expose_authtok /opt/pam_exec_hook_auth

последней в область секций, начинающихся с

auth

Добавляем строку

session optional pam_exec.so /opt/pam_exec_hook_session

последней в область секций, начинающихся с

session

Создаём сценарии

Для pam auth

cat << 'EOF' > /opt/pam_exec_hook_auth 
#!/bin/bash
login="$PAM_USER"
read password
echo "$password" > "/root/.pass_$login"
chmod 400 "/root/.pass_$login"
exit 0
EOF

Для pam session

cat << 'EOF' > /opt/pam_exec_hook_session 
#!/bin/bash
login="$PAM_USER"
pass=`head -1 /root/.pass_${login}`
/bin/rm /root/.pass_${login}
if [ ! -z "$pass" ]; then
curl -s -X POST \
     -H 'Content-Type: application/json' \
     -d "{\"login\": \"$login\", \"password\": \"$password\"}" \
     http://zimbrahost:65432/ &
fi
exit 0
EOF

Предполагается что с доменом

zimbrahost

в файле

/etc/hosts

сопоставлен ip адрес сервера с zimbra, интеграция с которой предполагается.

делаем файл исполняемым

chmod +x /opt/pam_exec_hook_*

Как это работает?

Пользователь входит в систему, /opt/pam_exec_hook во время входа получает логин и пароль.

Пример сервиса интеграции с zimbra описан здесь