Я запускаю небольшой скрипт, когда пользователь обращается к моему хосту Linux через SSH. Этот сценарий должен проверять и / или настраивать доступ Google Authenticator MFA для пользователя.
Прямо сейчас он работает так, как задумано, с одной оговоркой - в любой момент в процессе настройки MFA, если пользователь (т.е.) CTRL+Cs, мастер установки прерывается, но сеанс SSH продолжается. Мне это нужно для выхода пользователя, пытающегося получить доступ.
Как я могу этого добиться?
Это то, что я добавил внизу своего .bashrc
файл (обратите внимание, что это очень новинка для меня и что я открыт для критики / улучшения моей текущей попытки).
# MFA validation/configuration
if [[ -n $SSH_CONNECTION ]] ; then
echo "SSH connection to remote host successful."
echo "testing if MFA is configured..."
# is this test enough?
file="$HOME/.google_authenticator"
if [ -f "$file" ] ; then
printf "MFA configured, you may proceed.\n"
else
printf "MFA not configured; running setup wizard.\n"
# the command runs, but the else bit is never reached
if google-authenticator ; then
# I reach this point if I go to the end of the wizard
echo "MFA setup successful"
else
# this point is never reached
echo "MFA setup failed - logging you out"
exit
fi
fi
fi
Вы можете добавить строку
trap '' 2
при запуске скрипта для отключения CTRL+C и
trap 2
в конце, чтобы включить CTRL+C функциональный.
Это не позволит пользователю тормозить выполнение скрипта.
Обратите внимание, что это следует добавить в / etc / bashrc, чтобы сделать его общесистемным и недоступным для изменения пользователем.
https://www.cyberciti.biz/faq/unix-linux-shell-scripting-disable-controlc/