Solicita que o usuário digite sua senha de usuário para executar o comando do terminal não sudo [closed]

0

Como a pergunta pergunta, quero aprender como solicitar a senha dos usuários para comandos não personalizados

EDITAR:

Eu acho que não poderia dizer claramente de acordo com comentários, então vou elaborar meu pedido com exemplo, por exemplo eu abro terminal e tipo "ls -l" comando, depois de pressionar Enter ele deve me perguntar senha do usuário eu quero isso para todos os comandos não-sudo.

    
por Berk Can 28.09.2015 / 21:04

1 resposta

1

A falta típica de acesso ao hash de senha no arquivo de sombra pode tornar essa solicitação problemática para um programa userland aleatório usar o banco de dados de senha do sistema, como sudo e chsh e eles tendem a ter o bit setuid definido neles para que eles sejam executados como root e possam acessar o arquivo shadow.

[jdoe@centos ~]$ id -u
1001
[jdoe@centos ~]$ perl -E 'say for getpwuid(1001)'
jdoe
x
1001
1001



/home/jdoe
/bin/bash
[jdoe@centos ~]$ sudo perl -E 'say for getpwuid(1001)'
jdoe
$6$P1jejm1i$bo02c/...
1001
1001



/home/jdoe
/bin/bash
[jdoe@centos ~]$ 

Uma vez que um programa pode obter o hash de senha para um usuário (seja do banco de dados do sistema ou de alguma outra fonte, é o $6$P1jejm1i$bo02c/... bit redigido na saída acima), uma chamada tradicional crypt(3) deve ser suficiente para verificar a senha .

Um programa de prompt de senha também pode evitar os core dumps, bloquear a própria memória, varrer vários bits de memória e ignorar vários sinais, entre verificações ainda mais rigorosas se executar setuid, além de não repetir a senha. O OpenBSD facilita algumas dessas etapas via readpassphrase(3) , embora outros sistemas operacionais não estejam com getpass(3) sendo marcado como LEGACY ...

    
por 28.09.2015 / 21:54