getty a login - jak nahradit login prompt?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Prosinec 27 14:43:19 CET 2003


On Fri, 26 Dec 2003, Pavel Vejnárek wrote:

> pokousim se nahradit tradicni prihlasovaci proces overenim cipovou 
> kartou. O overeni hesla se bude starat muj vlastni PAM modul. Nemohu ale 
> nikde najit zpusob, jak vyradit z provozu (pripadne nahradit) klasickou 
> vyzvu na zadani uzivatelskeho jmena "login:". Jelikoz veskere inicialy 
> jsou na karte, je zbytecne tim uzivatele otravovat. Vim, ze jde 
> parametrem -n prikazat getty, aby se neptal na jmeno. V tom pripade to 
> za nej ale provede login.

Rozhodne budete muset dat -n tomu getty, protoze jinak ani neni sance, aby 
mohl PAMovy modul preskocit dotaz na jmeno. Dal je to pak otazka toho, jak 
je presne login naprogramovany. Lze totiz udelat dve ruzne veci:

- program se sam zepta na jmena a pak ho preda jako parametr pam_start()

- program se na jmeno nezepta a necha to na modulech, aby v okamziku,
  kdy ho chteji zjistit, zavolaly pam_get_user()

V prvnim pripade je treba upravit login, v druhem pripade staci zajistit, 
aby se uplne nejdriv zavolal modul, ktery precte jmeno z karty a ulozil ho
pro dalsi pouziti (pres pam_set_item s PAM_USER).

Tedy v prvnim pripade by jeste mozna slo drsne udelat, ze by se na dotaz
na jmeno treba jen odklepnul enter a modul by ten zmatecny udaj pak
preplacnul skutecnym uzivatelskym jmenem (coz mozna i jde), ale od
programu, ktery zada jmeno a priori lze jen tezko ocekavat, ze by se
psychicky srovnal s tim, ze na konci bude v PAMovych datech jine 
uzivatelske jmeno, nez tam vlozil na zacatku.

Jeste by samozrejme slo udelat to, ze by se login obalil programem, ktery 
by precetl to jmeno z karty a pak by spustil login, kteremu by to jmeno 
dal (aby se na nej neptal), a login by pak dokoncil autentizacni proces.


--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux