#!/bin/sh
set -eu
user="${PAM_USER:-}"
[ -n "$user" ] || exit 1
# Проверяем, что пользователь существует в NSS
passwd_entry="$(getent passwd "$user" || true)"
[ -n "$passwd_entry" ] || exit 1
uid="$(printf '%s\n' "$passwd_entry" | awk -F: '{print $3}')"
[ -n "$uid" ] || exit 1
case "$uid" in
''|*[!0-9]*)
exit 1
;;
esac
# Отсекаем локальных системных пользователей
[ "$uid" -ge 1000 ] || exit 1
# Проверяем, что это не чисто локальный пользователь из /etc/passwd
# Если пользователь найден только в files, а не через SSSD, можно не монтировать
if grep -q "^${user}:" /etc/passwd 2>/dev/null; then
exit 1
fi
# Проверяем наличие Kerberos ticket
if ! /usr/bin/klist -s; then
exit 1
fi
# Проверяем доступность SMB-сервера
timeout 2 bash -c 'exec 3<>/dev/tcp/sos.dc.tg.corp/445' >/dev/null 2>&1 || exit 1
exit 0