Skip to content

Instantly share code, notes, and snippets.

@AlBichutsky
Created March 11, 2019 22:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save AlBichutsky/fbd508a6e190dbc0f1e4cef194c198d9 to your computer and use it in GitHub Desktop.
Save AlBichutsky/fbd508a6e190dbc0f1e4cef194c198d9 to your computer and use it in GitHub Desktop.
#!/bin/bash
# отключим вывод сообщений в консоль, в случае если пользователи залогиняться под несуществующими именами
exec 2>/dev/null
# название группы, которой разрешен доступ в вых.дни
group="admin"
# проверка, принадлежит ли пользователь $PAM_USER группе админов: нет - 0, да -1
check_group=$(id -Gn $PAM_USER | grep -w $group | awk '{print $2}' | wc -l)
# проверка, является ли текущий день субботой: нет - 0, да - 1
check_saturday=$((date +%u) | grep "6" | wc -l)
# проверка, является ли текущий день воскресеньем: нет - 0, да - 1
check_monday=$((date +%u) | grep "7" | wc -l)
# проверка, является ли текущий день праздничным (парсим файл /etc/security/holidays.conf): нет - 0, да - 1
check_holidays=$(cat /etc/security/holidays.conf | awk '/^holiday/{print $2}' | grep $(date +%d-%m-%y) | wc -l)
# если пользователь не принадлежит группе админов и сегодня суббота/воскресенье/праздничный день
if [[ $check_group -eq 0 ]] && [[ $check_saturday -eq 1 || $check_monday -eq 1 || $check_holidays -eq 1 ]]
then
# то выводим сообщение
echo "Внимание! Доступ к серверу пользователю $PAM_USER ограничен в выходной/праздничный день!"
echo "Сегодня: $(date +%d-%m-%y), день недели: $(date +%A)"
# и запускаем цикл-таймер до наступления рабочего дня
until [[ $check_saturday -eq 0 && $check_monday -eq 0 && $check_holidays -eq 0 ]]
do
# пользователь не сможет ввести пароль, через 30 секунд будет возврат к вводу логина, а затем повторная проверка
sleep 30
done
else
exit 0 # если логинится пользователь группы admin - завершить выполнение скрипта и продолжить аутентификацию
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment