+ Responder ao Tópico



  1. #1

    Padrão Passwords em c/c++

    Pessoal, to desenvolvendo um programa e nele recebo um username e uma password e tenho que comparar com a password do username do linux...

    Depois de muito procurar descobri a função
    struct passwd = *getpwnam(char *username)
    nessa struct tem um campo pw_passwd. Mas idependente do usuário que eu consulto ele sempre me retorna o password "x". No man getpwnam verifiquei que ele pega esses dados do arquivo /etc/passwd, ao abri-lo constatei que realmente todas as passwords são mostradas como x...

    exemplo: root:x:0:0:root:/root:/bin/bash

    Imaginei que o linux não mostraria a password por motivos de segurança...mas mesmo no programa ele não mostra...Tem alguma outra forma de fazer isso ou eu que estou cometendo algum erro...

  2. #2

    Padrão

    Cara acho dificil vc conseguir comparar o password já que o linux criptografa os passwords com uma chave unica que so ele conhece, mas na verdade os passwords ficam no /etc/shadow nas distros mais novas , esse comando em C devia ser para versões de linux mais antigas, que o password ficava no /etc/passwd.

    falows

  3. #3

    Padrão

    não existe nenhum comando onde eu posso testar se um username e uma password fornecida corresponde com o password do usuário no linux?? Tanto faz ser em C ou comandos bash...

    Valeu...

  4. #4

    Padrão

    Cara tenta dar uma lida sobre o PAM e o PAM_authenticate que eh o sistema de autenticação que o linux usa, e ve se tem como vc passar um login e senha e o pam checar.

    falows

  5. #5

    Padrão

    Cara, pode ser que você consiga algo pelo status de funções... lembre-se que sempre que dá certo retorna 0.


    Abraços!

  6. #6

    Talking

    Pois é, xstefanox... Era mais ou menos isso que eu estava pensando em usar...algum comando bash que desse pra testar a senha...mas consegui uma maneira melhor, graças a sugestão do ruyneto! Para quem esteja com o mesmo problema que eu, achei como fazer um programa utilizando a biblioteca PAM...

    http://www.linuxsecurity.com.br/sect...ticle&artid=27

    o unico problema desse é que ele abre um prompt pra inserir a senha... Não era bem oque eu precisava pois estou desenvolvendo um aplicação TCP/IP...mas aqui

    LinuxDevCenter.com -- Writing PAM-Capable Applications, Part One

    mostra como criar uma conversation function que resolve isso!

    Valeu pessoal!!