A passwd-wrapper létrehoz egy pszeudo terminál-párat - ptm_open() és pts_open(), ezután forkol. A child process úgy állítja át a terminált, hogy ne várjon az enterre, és beállítja, hogy a processhez az előbb megnyitott terminál tartozzon, mint vezérlő terminál. Ezt követően átadja a vezérlést az eredeti passwd programnak, amely így a felhasználó helyett a passwd-wrapper szülő processzével kommunikál. Ezután már könnyű dolga van a programnak, a passwd programon keresztül elvégzi a jelszóváltást.
A lehetséges továbbfejlesztések:
A programot elvileg tetszés szerint át lehet alakítani bármilyen más interaktív program vezérlésére, ehhez mindössze a várt stringek és az adandó válaszokat kell megfelelően átalakítani. Nehezebb feladat az egyéb unixokra való átírás, sajnos a pszeudo-terminál kezelés rendszerenként eltérő. Nem mindegyik unixon van /dev/ptmx eszköz, ezeken más módon
kell a pszeudo terminál megnyitását megvalósítani.
A terminál beállítások is eltérnek, nem Linux
rendszereken célszerű a #define PTEM 1 direktívát is
kiadni, valamint a controlling terminál beállítása is másképp történhet.
- A hozzászóláshoz be kell jelentkezni
- 1666 megtekintés
Hozzászólások
Ha lesz egy kis idöm, küldök egy módosított verziót is. Amikor a programot átültettem Digital Unixra (eredetileg is arra kellett volna, a Linux csak teszt-platform volt), kiderült, hogy szinte semmi sem úgy müködik, mint eredetileg. Szerencsére rátaláltam a forkpty() függvényre, ami egy-két sorral megoldja azt, aminek a kidolgozása nekem a leghosszabb ideig tartott. Ha jól látom, a forkpty() az újabb Linux libc-ben szintén benne van. Szóval itt az ideje átírni ismét, majd ha lesz egy kis idöm, megcsinálom azt is.
- A hozzászóláshoz be kell jelentkezni
Ehhez csak ket hozzafuzesem lenne.
1. nem tudom, hogy DEC alatt is van-e chpasswd (mert ugye oda keszult a program, csak linux alatt irodott, ha figyelmesen elolvastad volna a dolgot), Te tudod, hogy van-e?
2. Ezt a programot Friczy asszem tobb mint egy evvel ezelott irta, akkor is volt mar chpasswd program? (azert kerult ki most a program, mert valakinek szuksege volt ra, es gondoltam mast is erdekel)
3. pl. Solaris alatt nincs chpasswd, akkor most mi van? kicsit linux kozpontu a gondolkodasmodotok, ez meg egy Unix portal =), de sebaj ettol meg a program szerintem jo
Upsz, nem is ketto, hanem 3 hozzafuzes lett. Ja egy negyediknek nezzetek azt az oldalat, hogy ez egy C kod, amibol tanulni is lehet
Udv: trey
- A hozzászóláshoz be kell jelentkezni
Megnéztem a chpasswd-t, valóban jó. Örültem volna neki, ha a program írásakor ismerem ezt a programot, elég sok munkától megkímélt volna, ha másért nem, azért, mert a forrás tanulmányozásával lehet, hogy többre jutok. Ha lesz egy kis szabadidöm, bele fogok nézni a forrásába, már csak azért is, hogy megtudjam: lehetett volna-e portolni ezt a programot DEC alá - ahol a jelszótárolás eltér mind a hagyományos unix jelszótárolástól, mind pedig a jelenleg elterjedt pam-tól.
Mindenesetre amikor a programot megírtam, elég sokat keresgéltem google-n és levelezölistákon, hogy van-e már valami hasonló program készen, és a chpasswd-re nem találtam rá, mellesleg akkor senki nem is ajánlotta. Mondhatni így jártam :))
Haszontalannak akkor sem tartom a befektetett munkát, elég sokat sikerült megtudnom a unix pty kezeléséröl.
- A hozzászóláshoz be kell jelentkezni
Csak egy apró megjegyzés...
A chpasswd az arra való, hogy batch-elve egyszerre sok felhasználónak beállítsa a jelszavát a root. Pl. script-b?l létrehoz egyszerre 100 user-t egy szöveges fájl alapján, majd utána ezekenek mindnek be is állít vmi random jelszót...
De pl. apop jelszó állítására, és egyéb interaktív cuccok kezelésére már nem jó. Friczy programja viszont erre való, hogy bármilyen programmal ezt el tudd játszani.
Ami miatt viszont Friczy tényleg feleslegesen dolgozott az az expect. Ha jól emléxem alapvet?en perl-re épül, vagy perl-ben íródott, és szinte bármilyen interaktív programot elvezérel.
apt-get install expect
utána lásd examples... Imho, elég korrekt cucc...
- A hozzászóláshoz be kell jelentkezni