Nos sistemas linux modernos, o motivo é que o pam_unix.so impõe esse atraso. Conforme relatado anteriormente, isso pode ser configurado em até dois segundos, alterando FAIL_DELAY
-o /etc/login.defs
. Se você deseja reduzir ainda mais o atraso, é necessário dar ao pam_unix.so a opção "nodelay". Por exemplo, no meu sistema, se você rastrear as inclusões a partir de /etc/pam.d/sudo
, você precisará editar a seguinte linha de /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
e mude para isso:
auth required pam_unix.so try_first_pass nullok nodelay
Infelizmente, da maneira como minha distribuição Linux (arch) configura as coisas, esse mesmo system-auth
arquivo é incluído por system-remote-login
, o qual é usado pelo sshd.
Embora seja seguro eliminar o atraso no sudo, porque ele é registrado, usado apenas por usuários locais e ignorável pelos invasores locais de qualquer maneira, você provavelmente não deseja eliminar esse atraso para logins remotos. Obviamente, você pode corrigi-lo escrevendo um sudo personalizado que não inclui apenas os arquivos de autenticação do sistema compartilhados.
Pessoalmente, acho que o atraso no sudo (e ignorar o SIGINT) é um grande erro. Isso significa que os usuários que sabem que digitaram incorretamente a senha não podem interromper o processo e ficar frustrados. Obviamente, você ainda pode parar o sudo com Ctrl-Z, pois o sudo não captura o SIGTSTP e, depois de interrompê-lo, você pode matá-lo com o kill -9 (SIGKILL). É apenas chato de fazer. Isso significa que um ataque automatizado pode disparar sudos em pseudo-terminais a uma taxa super alta. Mas o atraso frustra usuários legítimos e os incentiva a suspender suas conchas raiz em vez de sair deles para evitar ter que sudo novamente.