Mailinglist Archive: opensuse-es (821 mails)

< Previous Next >
Re: [opensuse-es] passwd: The user name supplied is too long.
  • From: Carlos Martinez <camarti@xxxxxxxxx>
  • Date: Fri, 4 Sep 2009 17:15:34 -0500
  • Message-id: <ff4762660909041515u27067fc9o85602e962bac6849@xxxxxxxxxxxxxx>
Saludos

Independientemente de las razones de por que esto esta en el passwd y
en el shadow (salvo para decir que es un sistema legado), cabe decir
que el usuario dificilmente va a olvidar este login porque esta
relacionado con su direccion de correo electronico.

Y fácilmente se va a equivocar al escribirlo.


Es cierto, pero no se va a exponer a nada fuera de lo comun, porque
sistemas como hotmail y muchos hosting de correo con cuentas virtuales
te obligan a digitar tu cuenta de correo completa y no solo el nombre
de usuario. No es divertido, pero no causa un gran trauma para la
operacion del sistema ni para el usuario (a menos claro esta que
padezca algun tipo de limitacion fisica o de otra indole).


Adicionalmente, aunque existe la limitacion de los 32 caracteres, es
posible autenticar sin problemas aun cuando el nombre de usuario
exceda esta limitacion.

Pero lo que hace es recortarlo e ignorar el exceso.

No creo ... no soy experto en esto, pero que pasa si usas usuarios con
un backend en ldap y o en una db?

puedes tener usuarios con el mismo nombre pero de distinto dominio o
ruta. Desde el punto de vista del sistema el nombre de usuario no
puede ser unicamente el "login". Debe ser este y la otra info
adicional que lo hace unico en el sistema. El recorte no puede ser
posible y es per se una debilidad de disenio. Debe fallar simplemente
y abortar la operacion si no puede manejar la longitud de lo que se le
pasa... tal como hace passwd y con su limite de 32 caracteres.

[ sobre el cambio de un parametro en el codigo de passwd]

¿Y que pasará cuando el passwd envíe un nombre excesivamente largo a las
librerías de base? A lo mejor tienes un overflow por ahí enmedio... ten en
cuenta que las librerías no habrán reservado espacio para recoger esa
variable.

No puedes hacer ese cambio sólo en un sitio, tienes que cambiarlo en todo el
sistema.


No lo habia considerado por ese lado. Pero si en /etc/passwd ya tenia
nombres excesivamente largos (de mas de 32 caracteres), y nada raro ha
ocurrido, asumo de buena fe que nada va a ocurrir cambiando una
limitacion especifica del comando passwd y que solo lo afecta a el.
Ademas revisando un poco el codigo veo que las funciones asociadas al
manejo del username en passwd usan datos del tipo const char * y no
del tipo char variable [MAX_USERNAMESIZE]. Adicionalmente getpwnam
hace algo parecido (funcion para obtener el username del sistema) al
igual que las funciones asociadas en PAM para el manejo del nombre de
usuario (funcion pam_start).

Con respecto a utmp, hasta donde entiendo, este se usa para registrar
quienes han pasado por el sistema y no para autenticar (auditoria
basica). El que recorte el username no es tan grave aunque aumenta la
probabilidad de una colision en los logs si dos cuentas empiezan por
los mismos 32 caracteres. En mi caso este un riesgo con el que debo
vivir y tener presente de que el utmp me puede devolver informacion
incorrecta por truncamiento.

Es claro que la buena fe no funciona en los asuntos de seguridad, pero
es de notar que los nombres de usuario de mas de 32 caracteres no son
nada raro en los ambientes sso.

Hasta la proxima

Carlos Martinez



- -- Saludos
      Carlos E. R.
--
Para dar de baja la suscripción, mande un mensaje a:
opensuse-es+unsubscribe@xxxxxxxxxxxx
Para obtener el resto de direcciones-comando, mande
un mensaje a:
opensuse-es+help@xxxxxxxxxxxx

< Previous Next >