trap '' 2 code=`oathtool --base32 --totp "xxxxxxxxxxxx"` echo -n Enter Code: read -s password echo "" if [ "$password" == "$code" ]; then echo "You are allowed in" else exit fi trap 2
Является ли размещение этого кода в верхней части моего
.profile
еще одним способом добавления двухфакторной аутентификации или это можно обойти?Я знаю, что вы можете сделать что-то вроде этого , чтобы добавить двухфакторную аутентификацию, но я хочу иметь возможность настроить это.
Нет!
Основная проблема в том, что .profile
читается только после успешного входа в систему! В этот момент уже запущена полная оболочка, а большинство оболочек создано для обслуживания пользователя, а не для того, чтобы помешать ему делать то, что ему нравится.
Давайте посмотрим, например:
# echo -en "echo byebye; exit" > ~foo/.profile
# ssh foo@localhost
foo@localhost's password:
[...]
byebye
Connection to localhost closed.
Но я все еще могу сказать оболочке сделать что-то совершенно другое. (Например, запустить другую оболочку.)
# ssh foo@localhost -t "/bin/sh"
foo@localhost's password:
$ id
uid=1001(foo) gid=1001(foo) groups=1001(foo)
Вы могли бы изменить оболочку пользователя на что-то более ограниченное, программу, предназначенную только для запроса OTP и последующего запуска оболочки. Но это затруднит выполнение любых действий, требующих запуска другой оболочки. Кроме того, все, что делается в домене пользователя, может быть изменено им обратно, а это не то, чего обычно хотят при аутентификации.
Пожалуйста, делайте аутентификацию там, где ей и место, а это PAM в большинстве Linux.