Ik ben bezig om aan een PAM-module ( een *.so) een externe parameter mee te geven maar de documentatie op Internet (RedHat, kernel.org etc) voorziet daar niet echt in. Gelden deze parameters als een methode in de *.so? Of heeft iemand er ervaring mee?
Dat hangt er vanaf wat je met 'externe parameters' precies bedoeld. Indien je de opties bedoeld die je in de pam.conf / of pam.d/* files zet : Die worden als argc / argv meegegeven aan de pam_sm_*() functies.Verwijderd schreef op 24 juni 2003 @ 16:02:
Ik ben bezig om aan een PAM-module ( een *.so) een externe parameter mee te geven maar de documentatie op Internet (RedHat, kernel.org etc) voorziet daar niet echt in. Gelden deze parameters als een methode in de *.so? Of heeft iemand er ervaring mee?
Indien je wat anders bedoeld zul je eerst wat meer duidelijkheid moeten verschaffen.
Ik kan er inderdaad ook geen touw aan vastknopen...een kernel module (.o) kun je parameters meegeven, maar je hebt het hier over Shared Object files (=libraries), die kun je helemaal niet starten laat staan (dus) parameters meegeven, tenzij via configfiles e.d., dus leg a.u.b. duidelijker uit wat je hiermee bedoelt
Het zit zo:igmar schreef op 24 juni 2003 @ 16:07:
[...]
Dat hangt er vanaf wat je met 'externe parameters' precies bedoeld. Indien je de opties bedoeld die je in de pam.conf / of pam.d/* files zet : Die worden als argc / argv meegegeven aan de pam_sm_*() functies.
Indien je wat anders bedoeld zul je eerst wat meer duidelijkheid moeten verschaffen.
ik heb nu een module die iemands chipcard uitleest tijdens het inloggen (dus inloggen mbv chipcardreader). Deze is aangesloten op com1 (oftewel /dev/ttyS0). Het nummer van de bedoelde seriele poort is de parameter die ik wil meegeven. Een voorbeeld van hoe mijn /etc/pam.d/login er uit kan zien:
code:
1
| session required /lib/security/pam_module.so poort=0 |
zoiets dus. Iemand kan dus makkelijker de gebruikte seriele poort veranderen.
Die worden dus als argc / argv meegegeven aan de pam_sm_*() functies :Verwijderd schreef op 24 June 2003 @ 16:22:
ik heb nu een module die iemands chipcard uitleest tijdens het inloggen (dus inloggen mbv chipcardreader). Deze is aangesloten op com1 (oftewel /dev/ttyS0). Het nummer van de bedoelde seriele poort is de parameter die ik wil meegeven. Een voorbeeld van hoe mijn /etc/pam.d/login er uit kan zien:
code:
1 session required /lib/security/pam_module.so poort=0
zoiets dus. Iemand kan dus makkelijker de gebruikte seriele poort veranderen.
code:
1
| PAM_EXTERN int pam_sm_authenticate (pam_handle_t * pamh, int flags, int argc, const char ** argv); |
En ja, da's zo ongeveer hetzelfde als de argc / argv van de main() functie. Hint : Gebruik de naam van de poort (ttyS0), en niet een nummer.
[ Voor 5% gewijzigd door igmar op 24-06-2003 17:20 ]
Effe wat OT verder :Wilke schreef op 24 June 2003 @ 16:11:
maar je hebt het hier over Shared Object files (=libraries), die kun je helemaal niet starten
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| [igmar@wrkst igmar]$ /lib/libc.so.6
GNU C Library stable release version 2.2.4, by Roland McGrath et al.
Copyright (C) 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 2.96 20000731 (Red Hat Linux 7.2 2.96-108.7.2).
Compiled on a Linux 2.4.9-34smp system on 2003-03-06.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
The C stubs add-on version 2.1.2.
linuxthreads-0.9 by Xavier Leroy
BIND-8.2.3-T5B
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Glibc-2.0 compatibility add-on by Cristian Gafton
libthread_db work sponsored by Alpha Processor Inc
Report bugs using the `glibcbug' script to <bugs@gnu.org>. |
Ik kon het effe niet laten
Dus de parameter achter de regel in /etc/pam.d/login zou kunnen zijn:igmar schreef op 24 juni 2003 @ 17:16:
[...]
Die worden dus als argc / argv meegegeven aan de pam_sm_*() functies :
code:
1 PAM_EXTERN int pam_sm_authenticate (pam_handle_t * pamh, int flags, int argc, const char ** argv);
En ja, da's zo ongeveer hetzelfde als de argc / argv van de main() functie. Hint : Gebruik de naam van de poort (ttyS0), en niet een nummer.
argv[1]=ttyS0
aangezien argv[0] een true statement is (en dus niet gevuld moet worden)?
True statement ? Da's wat nieuws. argv[] is hetgeen je in je applicatie krijgt. Zie verder gewoon de PAM docs, daar staat dit soort zaken allemaal in.Verwijderd schreef op 26 June 2003 @ 19:42:
Dus de parameter achter de regel in /etc/pam.d/login zou kunnen zijn:
argv[1]=ttyS0
aangezien argv[0] een true statement is (en dus niet gevuld moet worden)?
Ik heb nu in de regel in /etc/pam.d/login over mijn module achteraan het argument gezet:igmar schreef op 27 June 2003 @ 10:33
True statement ? Da's wat nieuws. argv[] is hetgeen je in je applicatie krijgt. Zie verder gewoon de PAM docs, daar staat dit soort zaken allemaal in.
COMPORT=0
/* andere optie is COMPORT=ttyS0 */
en in de code staat in een *.c:
argv[1]=COMPORT
hiermee moet het dan wel lukken.
Nu overschrijf je argv[1] met hetgeen wat in COMPORT staat. Lijkt me niet erg nuttig.Verwijderd schreef op 27 juni 2003 @ 11:20:
Ik heb nu in de regel in /etc/pam.d/login over mijn module achteraan het argument gezet:
COMPORT=0
/* andere optie is COMPORT=ttyS0 */
en in de code staat in een *.c:
argv[1]=COMPORT
hiermee moet het dan wel lukken.
Pagina: 1