Faça su pedir a senha várias vezes

1

Estou usando o Debian 8 e quando eu digito su , o aviso de senha aparece apenas uma vez. Se eu digitar a senha errada, espero tentar novamente e imediatamente começar a digitar novamente, mas partes da senha ficam visíveis no shell.

Como posso configurar su para re-solicitar a senha até que eu cancele com Ctrl + C ?

Eu tentei pesquisar em /etc/sudoers , /etc/pam.d/* , /etc/login.defs e este pergunta unix.SE que está incompleta infelizmente.

    
por Gerold Meisinger 25.03.2017 / 10:17

1 resposta

1

Os módulos PAM podem fornecer um nível de flexibilidade que atingirá quase exatamente o que você deseja. Com base na sua resposta em um comentário, você ficará feliz em permitir que su ofereça três tentativas antes de falhar. É isso que eu ofereço aqui.

Recomendo enfaticamente que você faça backup de todos os arquivos de configuração PAM que você alterar e de que você já tenha um shell raiz aberto em algum lugar pronto para reverter alterações quebradas. Após qualquer alteração em PAM , é muito importante testar se você ainda pode efetuar login e obter acesso root. Se você errar, pode lavar completamente o sistema.

Os arquivos PAM vivem em /etc/pam.d e você precisará de acesso root para alterá-los.

O arquivo su no Debian 8 contém uma linha de autenticação e uma referência ao arquivo de inclusão common-auth . Colocando-os juntos, conseguimos isso:

auth    sufficient pam_rootok.so

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so

auth    required                        pam_permit.so
auth    optional                        pam_cap.so

A parte interessante é a chamada para pam_unix.so , que é autenticada no banco de dados de senhas ( /etc/passwd e /etc/shadow ). O componente [success=N] informa ao PAM que, se o módulo retornar um status de sucesso, é para ignorar os próximos N módulos. Portanto, se você obtiver um retorno bem-sucedido de pam_unix.so , a configuração ignorará o módulo de falha pam_deny.so .

Podemos usar essa abordagem para criar mais duas tentativas de autenticação, como esta:

auth    sufficient pam_rootok.so

auth    [success=3 default=ignore]      pam_unix.so nullok_secure
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so

auth    required                        pam_permit.so
auth    optional                        pam_cap.so

Lá, trabalho feito.

Observe que, se você estiver executando o SAMBA ou algum outro esquema de autenticação externa, precisará ajustar um pouco as alterações. Em um dos meus sistemas, existe uma verificação adicional através de pam_winbind.so . Isso também precisaria ser replicado, então você iria a partir disso:

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    requisite                       pam_deny.so

para isso:

auth    [success=6 default=ignore]      pam_unix.so nullok_secure
auth    [success=5 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    [success=4 default=ignore]      pam_unix.so nullok_secure
auth    [success=3 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    requisite                       pam_deny.so
    
por 27.03.2017 / 12:01

Tags