Newsgroup: it.comp.os.linux.development
Titolo: le password di sistema

Chi mi sa dire come faccio a confrontare la password inserita sul mio
programma con le password del sistema per verificare se è giusta ?
con getspnam( nomeutente) ottengo la sua password criptata che è in
/etc/shadow, ma come la confronto con quella digitata ?
Grazie.

Matic :

Credo che tu debba criptare la password inserita e confrontare il risultato
con quello sul file delle password.
Questo perche' la funzione per criptare le password e' one-way, cioe' non ti
permette di ottenere la stringa in chiaro a partire da quell criptata.
Alessandro

 wrote in message
news:pan.2002.05.24.17....@hotmail.com

Devi criptarla con crypt e confrontare quanto la stringa criptata
con il valore letto dal file delle password.
Il salto con cui e' stata criptata la password originale
dovrebbero essere i primi due caratteri di quanto ottenuto con
getspnam().
Questa procedura funzionava quando le password erano memorizzate
in /etc/passwd. Non ho idea se funzioni ancora con i nuovi algoritmi
di cifratura.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG



Si, infatti avevo seguito questa strada: riesco ad ottenere la password
criptata dell'utente ma arrivato al punto di criptare quella digitata
mi blocco, perchè ottengo:
...prog.c:175: undefined reference to `crypt'
collect2: ld returned 1 exit status
make: *** [all] Error 1
cioè, la compilazione non viene eseguita perché il linker non trova la
funzione crypt nonostante io includa <unistd.h>
Perché ? Che devo fare ?


I'm not prejudiced, I hate everyone equally.

 ciao
Si ok, funziona. Grazie.
cosa strana però... qualcuno sà il motivo preciso ?

 cosa strana perņ... qualcuno są il motivo preciso ?
Semplicemente crypt non appartiene alle librerie standard ma e' in una
libreria separata.
Alessandro.

 cosa strana però... qualcuno sà il motivo preciso ?
Se non "linki" il tuo programma con le librerie giuste, difficilmente
funzionera`. Crypt non fa eccezione.
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 
che c'entra.. io ho sempre pensato che bastasse usare
#include <libreria.h>
mica vado a compilare con -lprintf se uso printf

 mica vado a compilare con -lprintf se uso printf
printf e` nelle librerie standard, e sono incluse "d'ufficio" dal
linker appunto perche' standard.
libcrypt.so.1 non e` una libreria standard, quindi il linker,
giustamente, chiede al programmatore che fare.


 #include <libreria.h>
Beh, hai sempre pensato male. :-)
Con l'include dichiari il prototipo della funzione che usi, ma non dici
al linker dove diavolo sta, quella funzione.
Oltretutto, cio' che dichiari con l'include e' di solito appunto il nome
di una funzione contenuta in una libreria, non la libreria stessa.
Il fatto che in alcuni casi la libreria abbia lo stesso nome della
funzione principale (a volte unica) contenuta, e' puramente una
coincidenza.
PS: Non esiste la libreria printf.
-- 
          |Save our planet!
   Ciao   |Save wildlife!
  roberto |For your E-MAIL use ONLY recycled Bytes  !!
          |roberto poggi   
rpo...@softhome.net


PPS: non esiste nemmeno la libreria crypt

PPS: non esiste nemmeno la libreria crypt
root@cuccu:~# locate libcrypt
/usr/lib/libcrypt.a
/usr/lib/libcrypt.so
/usr/lib/libcrypto.so
/usr/lib/libcrypto.a
/lib/
libcrypt-2.2.4.so
/lib/libcrypt.so.1
/lib/libcrypto.so.0.9.6b
/lib/libcrypto.so.2
Bonf



ehehehehh
:**
Scusa tutti

 di cifratura.
La tecnica funziana ancora, ma il salto sembra essere composto dai
primi 11 caratteri della password criptata.
La man page di crypt (almeno sul mio sistema) e' piuttosto datata
e riporta notizie non corrette (anche quelle che ho trovato on-line
non sembrano piu' aggiornate).


 
http://groups.google.com/advanced_group_search