I'd like to know what the maximum username length is for current GNU/Linux systems, e.g. Ubuntu 11.04.
8 characters appears to be some historical standard, but I've already noticed on my current Ubuntu system that this limit does not apply.
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.
Sign up to join this communityThe current limit is 32 characters (according to useradd
man page).
The answer varies somewhat.
useradd(1) references a limit of 32 characters. This is based AFAIU on libc6.
Some utilities or systems may impose shorter names or behave inconsistently when presented with longer names, including top, ps, w/who, finger, NFS, and various multi-platform directory systems (NIS/NIS+, SMB, CIFS, Kerberos), potentially based on limitations of other/remote platforms. Many of the various psutil
commands will display a UID rather than username if the latter exceeds 8 characters.
Some utilities and applications may impose their own arbitrary limitations. E.g.: IBM's DB2 apparently won't allow logins from users with usernames exceeding 8 characters: https://www.toolbox.com/tech/data-management/question/length-of-username-permitted-on-db2-95-aix-6-012010/
8 characters is a generally sane limit, and saves typing.
The answer, from the kernel's perspective, is dependent on glibc and what LOGIN_NAME_MAX is — it is closer to 256 these days.
From /usr/include/bits/local_lim.h on centos 7:
/* Maximum login name length. This is arbitrary. */
#define LOGIN_NAME_MAX 256
However, that is a different limit then if you use adduser/addgroup or useradd/groupadd, because those depend on the files underneath.
Recall that glibc can be configured to use a different backend via /etc/nsswitch.conf, e.g.
passwd: files sss
In this case, it would rely on /etc/passwd first, which may (sort of, by way of useradd/groupadd) have a 32 character limit on the user/group name, then fall back to sss (sssd
), which is likely to have a much different limit (1024 it seems if backed by ActiveDirectory).
Note that /usr/include/grp.h effectively defines 256 as well for group names (checked on centos 7).
So, for local accounts, the limit is likely to be what is referenced in useradd/groupadd (likely to be ~31). For different nss implementations, it will likely depend on the server restrictions and glibc on the system — in many cases this is likely to be 256.
As other answers have explained, longer usernames are possible, but another practical reason to try to limit to 8 chars maximum is that ps(1) reports numeric uids instead of usernames beyond 8 chars.