[opensuse-es] passwd: The user name supplied is too long.
Saludos. Tengo un molesto problema con el comando passwd y los nombres de usuario de mas de 33 caracteres. Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres? En su defecto, existe una alternativa a passwd? Gracias a todos por sus respuestas. Carlos A. Martinez -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-09-03 a las 17:06 -0500, Carlos Martinez escribió:
Tengo un molesto problema con el comando passwd y los nombres de usuario de mas de 33 caracteres.
Es que es una exageración usar nombres tan largos, ¡que barbaridad! Tener que teclear todo eso para entrar... Si lo que quieres es guardar el nombre real de la persona, tienes otro campo para ponerlo.
Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres?
En su defecto, existe una alternativa a passwd?
Es limitación del sistema, el comando simplemente la respeta. - -- Saludos Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkqgQWIACgkQtTMYHG2NR9XpawCfUPnMCg8AMpBCOmU2NlacMVr4 aJ0An1wjux8jeEVlxyIIaLEFJUf/Gj2Y =61q3 -----END PGP SIGNATURE-----
Saludos.
Ha sido interesante seguir la discusion derivada de tener nombres de
usuarios largos y el por que de lo mismos.
En mi caso tengo nombres de usuarios de hasta 52 caracteres.
Por que tan largos?
La razon es simple: los nombres de usuario son de la forma
user@dominio y se tienen cosas como:
francisco.arboleda@quedominiotanlargo.com (43 caracteres)
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.
Adicionalmente, aunque existe la limitacion de los 32 caracteres, es
posible autenticar sin problemas aun cuando el nombre de usuario
exceda esta limitacion.
Hacer un cambio a un ldap o una db como backend, por el momento, esta
descartado por cuestiones de migracion, validacion, disponibilidad y
estabilidad. Cuando se tienen casi 3400 entradas en el passwd
garantizar los servicios a todos no es labor de una semana y prevalece
el dicho: si funciona, dejelo quieto.
El inconveniente venia al momento de cambiar o bloquear/desbloquear
la clave y el workaround era usar una aplicacion web hecha para tal
fin. Sin embargo el practico y simple poppassd no trabajaba al igual
que passwd para los nombres largos.
No me gusta modificar el codigo de las aplicaciones y mas cuando son
base, pero cuando toca no hay mas remedio y en este caso la solucion
rapida y sucia fue la siguiente:
1) bajar el rpm de passwd
2) extraer las fuentes y modificar pwdb.h y cambiar MAX_USERNAMESIZE
(este solo se referencia dos veces en todo el codigo de passwd: una
cuando se define y otra cuando se verifica la longitud del nombre)
3) Recontruir el rpm cambiando tambien el spec para subir la version y
modificar changelog
4) actualizar al nuevo paquete
Esto no me gusta, porque rompe el ciclo de actualizaciones del sistema
para el paquete que tiene passwd, asi que sigo en la busqueda de
alternativas menos agresivas para corregir este inconveniente, Pero
por lo visto dicha limitacion esta "hardcoded" en las fuentes
Gracias a todos por sus respuestas
Carlos A. Martinez
2009/9/3 Carlos E. R.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
El 2009-09-03 a las 17:06 -0500, Carlos Martinez escribió:
Tengo un molesto problema con el comando passwd y los nombres de usuario de mas de 33 caracteres.
Es que es una exageración usar nombres tan largos, ¡que barbaridad! Tener que teclear todo eso para entrar... Si lo que quieres es guardar el nombre real de la persona, tienes otro campo para ponerlo.
Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres?
En su defecto, existe una alternativa a passwd?
Es limitación del sistema, el comando simplemente la respeta.
- -- Saludos Carlos E. R.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAkqgQWIACgkQtTMYHG2NR9XpawCfUPnMCg8AMpBCOmU2NlacMVr4 aJ0An1wjux8jeEVlxyIIaLEFJUf/Gj2Y =61q3 -----END PGP SIGNATURE----- -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-09-04 a las 11:30 -0500, Carlos Martinez escribió:
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.
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 me gusta modificar el codigo de las aplicaciones y mas cuando son base, pero cuando toca no hay mas remedio y en este caso la solucion rapida y sucia fue la siguiente:
1) bajar el rpm de passwd
2) extraer las fuentes y modificar pwdb.h y cambiar MAX_USERNAMESIZE (este solo se referencia dos veces en todo el codigo de passwd: una cuando se define y otra cuando se verifica la longitud del nombre)
¿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. - -- Saludos Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkqhYSYACgkQtTMYHG2NR9WTJACeKOjesf39zdiUIiAhJk4Y03FX 4WwAoI3CZpsZlOHO5zmEzFHfnX+ZSZK7 =V5Wi -----END PGP SIGNATURE-----
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@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hola :) On Friday 04 September 2009 00:06:12 Carlos Martinez wrote:
Saludos.
Tengo un molesto problema con el comando passwd y los nombres de usuario de mas de 33 caracteres.
Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres?
En su defecto, existe una alternativa a passwd?
Gracias a todos por sus respuestas.
Si no me falla la memoria: glibc tiene limitado el login a 31 caracteres. Esto te lo digo de memoria y de cuando yo era joven ;) No sé si habrá cambiado, pero parece que no por lo que dices. HTH Rafa -- "We cannot treat computers as Humans. Computers need love." rgriman@skype.com rgriman@jabberes.org Happily using KDE 4.3.0 :) -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hola :) On Friday 04 September 2009 00:06:12 Carlos Martinez wrote:
Saludos.
Tengo un molesto problema con el comando passwd y los nombres de usuario de mas de 33 caracteres.
Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres?
En su defecto, existe una alternativa a passwd?
Gracias a todos por sus respuestas.
Carlos A. Martinez
Si echas un vistazo a: /usr/include/bits/utmp.h Verás que está definido a 32 caracteres, justo uno más que lo que usas tu. Por cierto, como dice Carlos, ¿por qué logins tan largos? ¿Se acuerdan de ellos los usuarios? ;) Volviendo a utmp.h, lo podrías modificar, pero tendrías que recompilar glibc y toda la distro entera ... Rafa -- "We cannot treat computers as Humans. Computers need love." rgriman@skype.com rgriman@jabberes.org Happily using KDE 4.3.0 :) -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-09-04 a las 15:21 +0200, Rafa Griman escribió:
Si echas un vistazo a:
/usr/include/bits/utmp.h
Verás que está definido a 32 caracteres, justo uno más que lo que usas tu.
El null del final. - -- Saludos Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkqhH2cACgkQtTMYHG2NR9WeAwCfSiIUASa+B17f5vT+L0gpUA+J qoMAni/jCYe2RrVwthkNUwW7gVHKesGg =6xDd -----END PGP SIGNATURE-----
El 3 de septiembre de 2009 18:06, Carlos Martinez
Saludos.
Tengo un molesto problema con el comando passwd y los nombres de usuario de mas de 33 caracteres.
Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres?
En su defecto, existe una alternativa a passwd?
Gracias a todos por sus respuestas.
Carlos A. Martinez --
Es como decir que es molesto no poder crear archivos con 752 caracteres en el nombre.... No entiendo para que podrias necesitar nombres de usuario asi de largos.... -- Ciro Iriarte http://cyruspy.wordpress.com -- -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 2009-09-04 a las 10:45 -0400, Ciro Iriarte escribió:
El 3 de septiembre de 2009 18:06, Carlos Martinez escribió:
Existe alguna forma de poder usar passwd con nombres de usuario de mas de 33 caracteres?
En su defecto, existe una alternativa a passwd?
Es como decir que es molesto no poder crear archivos con 752 caracteres en el nombre.... No entiendo para que podrias necesitar nombres de usuario asi de largos....
La pregunta se podría hacer al revés, ¿cuál es la limitación "lógica" (a nivel de software) que existe hoy en día para no poder usar nombres de usuario de mayor longitud? Más allá de mantener la compatibilidad entre los distintos sistemas operativos, no veo razón alguna, por lo que debería un parámetro opcional y modificable fácilmente por el usuario, ya que al fin y al cabo, es su sistema y lo puede "cocinar" tan incompatible como quiera :-) Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-09-04 a las 17:04 +0200, Camaleón escribió:
El 2009-09-04 a las 10:45 -0400, Ciro Iriarte escribió:
Es como decir que es molesto no poder crear archivos con 752 caracteres en el nombre.... No entiendo para que podrias necesitar nombres de usuario asi de largos....
La pregunta se podría hacer al revés, ¿cuál es la limitación "lógica" (a nivel de software) que existe hoy en día para no poder usar nombres de usuario de mayor longitud?
Más allá de mantener la compatibilidad entre los distintos sistemas operativos, no veo razón alguna, por lo que debería un parámetro opcional y modificable fácilmente por el usuario, ya que al fin y al cabo, es su sistema y lo puede "cocinar" tan incompatible como quiera :-)
Claro que lo puedes modificar. Te haces una cuenta en el buildservice, cambias un .h, y recompilas la distro. Te genera unos rpms, los instalas, e voilà, tienes tu distribución personalizada con 84 caracteres de nombre de usuario >:-P No se puede porque es una opción básica en tiempo de compilación. Cuando diseñas un software eliges unas variables (miles) de ciertos tamaños que consideras apropiados. Unas cuantas variables puedes dejar el tamaño opcional para el usuario, pero eso complica bastante el software. Pero bastante, bastante. El desarrollador hace en su día una elección... qué define a qué tamaño, qué deja libre... sopesa las necesidades, las ventajas, los inconvenientes... Es su trabajo. Ya sabes, si quieres cambiarlo, crea un FATE. Me apuesto una sidra (virtual) a que no te hacen ni caso o te mandan a paseo - les supondría una burrada de trabajo cambiar eso a estas alturas :-P (Comparable a lo de ponerle nombres largos a los ficheros del msdos. Se hizo, costara lo que costara, porque había verdadero interés y justificación. Y el método es tal que hace chirriar las neuronas de cualquier desarrollador que lo vea, por lo feo que es). - -- Saludos Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkqhMg4ACgkQtTMYHG2NR9UCkwCglw4fUlw23ua+T3h5BHOAH7JA zUgAniPPyWOF4uXeMRK60uZYuUBqcv3S =/h1Z -----END PGP SIGNATURE-----
El 2009-09-04 a las 17:28 +0200, Carlos E. R. escribió:
El 2009-09-04 a las 17:04 +0200, Camaleón escribió:
El 2009-09-04 a las 10:45 -0400, Ciro Iriarte escribió:
Es como decir que es molesto no poder crear archivos con 752 caracteres en el nombre.... No entiendo para que podrias necesitar nombres de usuario asi de largos....
La pregunta se podría hacer al revés, ¿cuál es la limitación "lógica" (a nivel de software) que existe hoy en día para no poder usar nombres de usuario de mayor longitud?
Más allá de mantener la compatibilidad entre los distintos sistemas operativos, no veo razón alguna, por lo que debería un parámetro opcional y modificable fácilmente por el usuario, ya que al fin y al cabo, es su sistema y lo puede "cocinar" tan incompatible como quiera :-)
Claro que lo puedes modificar. Te haces una cuenta en el buildservice, cambias un .h, y recompilas la distro. Te genera unos rpms, los instalas, e voilà, tienes tu distribución personalizada con 84 caracteres de nombre de usuario >:-P
Todo eso está muy bien, pero he dicho de "forma" sencilla ;-)
No se puede porque es una opción básica en tiempo de compilación. Cuando diseñas un software eliges unas variables (miles) de ciertos tamaños que consideras apropiados. Unas cuantas variables puedes dejar el tamaño opcional para el usuario, pero eso complica bastante el software. Pero bastante, bastante.
El desarrollador hace en su día una elección... qué define a qué tamaño, qué deja libre... sopesa las necesidades, las ventajas, los inconvenientes... Es su trabajo.
Al igual que hay cienes de parámetros modificables este podría ser uno de ellos: compilas para una limitación de caracteres "x" (extra larga) y luego "limitas" vía opciones de configuración (predeterminado a 32 o 33, los que sean) para que el usuario decida la "barbaridad" que prefiera (5, 20, 30, 115 o 500 caracteres, lo que software le permita).
Ya sabes, si quieres cambiarlo, crea un FATE. Me apuesto una sidra (virtual) a que no te hacen ni caso o te mandan a paseo - les supondría una burrada de trabajo cambiar eso a estas alturas :-P
Ya tienen bastante con poner lindo al kde y tienen escasez de mano de obra, así qué, ¿pá qué moelestarles con "pequeñeces"? >:-P
(Comparable a lo de ponerle nombres largos a los ficheros del msdos. Se hizo, costara lo que costara, porque había verdadero interés y justificación. Y el método es tal que hace chirriar las neuronas de cualquier desarrollador que lo vea, por lo feo que es).
Saludos, -- Camaleón -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2009-09-04 a las 17:43 +0200, Camaleón escribió:
El 2009-09-04 a las 17:28 +0200, Carlos E. R. escribió:
Más allá de mantener la compatibilidad entre los distintos sistemas operativos, no veo razón alguna, por lo que debería un parámetro opcional y modificable fácilmente por el usuario, ya que al fin y al cabo, es su sistema y lo puede "cocinar" tan incompatible como quiera :-)
Claro que lo puedes modificar. Te haces una cuenta en el buildservice, cambias un .h, y recompilas la distro. Te genera unos rpms, los instalas, e voilà, tienes tu distribución personalizada con 84 caracteres de nombre de usuario >:-P
Todo eso está muy bien, pero he dicho de "forma" sencilla ;-)
Pero si es muy sencillo... eso dicen ellos, claro, cuando lo tienes que hacer tú. Si lo tienen que hacer ellos, entonces hasta para cambiar una coma en un string, te dicen que necesita tres semanas de pruebas, que si patatín patatán, y que no lo hacen >:-)
No se puede porque es una opción básica en tiempo de compilación. Cuando diseñas un software eliges unas variables (miles) de ciertos tamaños que consideras apropiados. Unas cuantas variables puedes dejar el tamaño opcional para el usuario, pero eso complica bastante el software. Pero bastante, bastante.
El desarrollador hace en su día una elección... qué define a qué tamaño, qué deja libre... sopesa las necesidades, las ventajas, los inconvenientes... Es su trabajo.
Al igual que hay cienes de parámetros modificables este podría ser uno de ellos: compilas para una limitación de caracteres "x" (extra larga) y luego "limitas" vía opciones de configuración (predeterminado a 32 o 33, los que sean) para que el usuario decida la "barbaridad" que prefiera (5, 20, 30, 115 o 500 caracteres, lo que software le permita).
Eso es otra posible decisión de diseño, pero no está justificada su necesidad, y no se ha hecho. Ten en cuenta que estas cosas son históricas, y modificarlas ahora no es nada sencillo. La única posiblidad "relativamente posible" es cambiar esa constante en el header y recompilar.
Ya sabes, si quieres cambiarlo, crea un FATE. Me apuesto una sidra (virtual) a que no te hacen ni caso o te mandan a paseo - les supondría una burrada de trabajo cambiar eso a estas alturas :-P
Ya tienen bastante con poner lindo al kde y tienen escasez de mano de obra, así qué, ¿pá qué moelestarles con "pequeñeces"? >:-P
Yo por incordiar O:-) - -- Saludos Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iEYEARECAAYFAkqhX0IACgkQtTMYHG2NR9VJJQCfRsR1nmzdsLs65NOkyw/qNS6s 28gAn2MutvRbsDLcp7uEZDnVuJWiD29u =qAj3 -----END PGP SIGNATURE-----
participants (5)
-
Camaleón
-
Carlos E. R.
-
Carlos Martinez
-
Ciro Iriarte
-
Rafa Griman