On 10/3/06, Tom Haynes <Thomas.Haynes at sun.com> wrote:
> Also, read passwd(4):
>
>      where
>
>      username        is the user's login name.
>
>                      The login (login)  and  role  (role)  fields
>                      accept  a string of no more than eight bytes
>                      consisting of characters  from  the  set  of
>                      alphabetic  characters,  numeric characters,
>                      period (.), underscore (_), and hyphen  (-).
>                      The first character should be alphabetic and
>                      the field should contain at least one  lower
>                      case alphabetic character. A warning message
>                      is displayed if these restrictions  are  not
>                      met.

>From a standards perspective, this is outdated.  Refer to
http://www.opengroup.org/onlinepubs/009695399/xrat/xbd_chap03.html.

    User Database

    ...

    IEEE Std 1003.1-2001 is silent about the content of the strings
    containing user or group names. These could be digit strings.
    IEEE Std 1003.1-2001 is also silent as to whether such digit
    strings bear any relationship to the corresponding (numeric)
    user or group ID.


I've spent many hours talking to the appropriate engineering folks from
2/3 of the leading UNIX vendors about supportability of all numeric (9-digit
even) usernames.  They each started telling me what POSIX says without being
able to point to the part of POSIX that says all numeric usernames are not
allowed.  At the time, everything that was critical worked but left us in
a dubious support situation.

Along came an update to a product from the other 1/3 of the top UNIX vendors
that specifically broke 9-digit usernames.  The bug report that was opened
was closed as "will not fix".

In my experience with this issue (measured in dozens of hours, mostly
really bad meetings) run away from 9-digit usernames as quickly as possible.
If 9-digit numbers as usernames are engrained in your environment and you
need to map names in an easy way, look to decimal->hex for inspiration.
100000000 == aa000000, 999999999 == y9999999.

Mike

-- 
Mike Gerdts
http://mgerdts.blogspot.com/

Reply via email to