| Alejandro Vilte on Thu, 05 Aug 2004 09:23:46 -0500 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Indice por Fecha] [Indice por Hilo]
| Re: [l-linux] no entiendo pam. |
Sr. Ernesto Novich, agradesco muchísimo por su explicación y ejemplo. Con prácticas que realizare mas luego creo terminare por enterder de modo casi completo. Lamento no poder dedicarle mas tiempo que quisiera para aprender sobre linux, <<debido a cuestiones laborales>>. Pero cada explicación suya como de mucho otros colisteros,siento que me /nos dan la fuerza necesaria para seguir avanzando. Mi respeto y cordiales saludos. Vilte, Alejandro Argentina. > > auth "¿Eres quien dices ser?" > account "¿Se cumplen las condiciones para que > ingreses?" > password "¿Tu clave es válida?" > session "¿Tu entorno de trabajo está correcto?" > > A esas preguntas se puede recibir una respuesta > definitiva "Si" o "No". > Tan pronto haya una respuesta definitiva, culmina el > procesamiento de la > columna en cuestión. Cada módulo emitirá la > respuesta en base al > modificador que se agregue a la columna: > > > *2) required=debe ser exitoso para que continue la > > autenticación, si falla uno el usuario no es > avisado > > hasta que se controle todos los modulos. > > requisite=Si falla un modulo el usuario es > avisado > > con un mensaje. > > sufficient=Si fracasa el modulo es ignorado, > pero > > si fue existoso y ningun modulo required fracaso, > el > > usuario es autenticado. > > optional= no logro entenderlo > > Con éstos modificadores puedes dar las respuestas > > required Si el módulo falla se obtiene respuesta > definitiva "No" y > sale "por la derecha", pero si el módulo > triunfa se obtiene > respuesta "Si, pero tengo que revisar otras > cosas" y se > sigue hacia abajo en la columna. > sufficient Si el módulo falla no hay ninguna > respuesta y se sigue hacia > abajo en la columna, pero si el módulo > triunfa se obtiene > respuesta definitiva "Si" y sale "por la > derecha". > requisite Si el módulo falla se indica; en > cualquier caso se sigue > hacia abajo en la columna. > > Así se van probando los módulos y determinando sus > respuestas, de arriba > hacia abajo. Si hay una "salida por la derecha", ya > se tiene una > respuesta definitia; si llega hasta el fondo, la > respuesta definitiva es > la que ofrece el último módulo de la columna. > > Digamos que existen mod_A y mod_B que son capaces de > identificarte en > dos bases de datos diferentes A y B; cada módulo lo > que hace es buscar > tu nombre de usuario en la base de datos particular, > si existes dice que > "si" y si no existes dice que "no". Para todo > usuario quieres ver > _primero_ si existe en A, y si es el caso dejarlo > entrar; y si no existe > en A, ver si existe en B, y si es el caso dejarlo > entrar. En caso > contrario, pues no puede entrar. Sencillo > > auth sufficient mod_A > auth required mod_B > > Al entrar a la columna, lo primero que se hace es > tomar las credenciales > presentadas por el usuario y buscarlas en A. Si > existen, el módulo > triunfa y en virtud del sufficient, se "sale por la > derecha" diciendo > "Si", con lo que el usuario ha sido autenticado. Si > las credenciales no > existen en A, entonces mod_A falla y en virtud del > sufficient, no dice > nada y "sigue para abajo". En éste punto las > credenciales se buscan en > B; si existen, el módulo triunfa, y en virtud del > required la respuesta > es "Si" pero debe seguir hacia abajo y como no hay > nada más, triunfa la > columna, con lo que el usuario ha sido autenticado. > Si las credenciales > no existen B, entonces mod_B falla y en virtud del > required, se "sale > por la derecha" diciendo "No". > > El ejemplo clásico de aplicación de ésta estrategia > es, por ejemplo, > cuando se tiene la base de datos de usuario en LDAP, > pero se tiene el > /etc/passwd como "último recurso" [3]. Así, > típicamente se tiene > > auth sufficient mod_ldap.so > auth required mod_unix.so > > "Si las credenciales están en el LDAP, listo; si no, > fíjate en > /etc/passwd, y allí tiene que estar, si no no > entra". El problema de que > te pide la clave varias veces es muy simple: cada > módulo _necesita_ > recibir las credenciales particulares para > verificarlas, pero las > _consume_ en la operación. Esto es, mod_ldap recibe > las credenciales, > pero en el proceso de verificarlas "las gasta", de > modo que si _falla_ > no le queda nada a mod_unix para trabajar y por eso > las vuelve a pedir. > Eso puede o no tener sentido, y depende mucho de la > configuración > específica; es decir, puede convenir que el sistema > pida varias claves > para diferentes módulos, como puede convenir reusar > la misma clave en > todas las validaciones [4]; en tu caso, y en el > ejemplo que hago, > conviene que sea la misma credencial en toda la > pila, es decir, que pida > la clave una sola vez y la reuse tantas veces como > sea necesario. > > Si uno lee la documentación de PAM se encuentra que > para lograr eso se > emplea la opción use_first_pass, de modo que nos > queda > > auth sufficient mod_ldap.so > auth required mod_unix.so use_first_pass > > Lo que debe hacerse es establecer una secuencia de > pasos lógicos que > deben cumplirse para autenticar, y construir la > columna. Cada módulo > tiene controles diferentes y se encadenan usando > sufficiente, required, > optional y requisite como si estuvieras escribiendo > el === message truncated === ===== __________________________________ Do you Yahoo!? Yahoo! Mail is new and improved - Check it out! http://promotions.yahoo.com/new_mail ________________________________________________________________________ Lista de Correo <l-linux@linux.org.ve> Visite http://www.linux.org.ve/cgi-bin/mailman/listinfo/l-linux para suscribirse, retirarse y leer las normas de uso. Visite el canal IRC #velug en undernet.org para consultas interactivas