Назад | Перейти на главную страницу

Выйти пользователя из системы, если он нарушит команду bashrc

Я запускаю небольшой скрипт, когда пользователь обращается к моему хосту 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/