misc/161091: Max username length is 16 characters
darksoul at darkbsd.org
Wed Sep 28 06:50:04 UTC 2011
>Synopsis: Max username length is 16 characters
>Arrival-Date: Wed Sep 28 06:50:03 UTC 2011
>Originator: Stephane Lapie
FreeBSD fcc4svnapf01.aozora.lan 8.2-RELEASE #1: Mon Jun 13 12:33:03 JST 2011 stephanelapie at fcc4svnapf02.aozora.lan:/usr/obj/usr/src/sys/GENERIC amd64
The system only allows usernames to be 16 characters (definitions of UT_NAMESIZE in include/utmp.h, and MAXLOGNAME in sys/sys/param.h), which turns out to be a problem in our company, where we make up administrator usernames in the form of <firstname><lastname>, which turns out quite often to require more than 16 characters.
It would be nice if the system was built to support up to 32 characters, like many other OSes do.
Creation of users via adduser will fail if the username is more than 16 characters. Obviously, directly editing password database files does not work either, the system won't acknowledge usernames beyond 16 characters.
I wrote a quick patch to apply to the whole source tree, that modifies :
to bring up the login name max length to 32 characters (not including NUL)
At my company, we are building our own releases and our own packages from the ports, to ensure consistency. The above patch has been tested since FreeBSD 8.0-RELEASE, and releases/packages generated relying on it have been ran in production for two years now, with no issues detected.
Is there anything I missed, or any reasons for retaining the 16 character limitation?
Patch attached with submission follows:
--- ./include/utmp.h.old 2010-03-02 17:15:51.000000000 +0900
+++ ./include/utmp.h 2010-03-02 17:16:09.000000000 +0900
@@ -53,7 +53,7 @@
* UT_HOSTSIZE is also too small to hold most common hostnames or IPv6
-#define UT_NAMESIZE 16 /* see MAXLOGNAME in <sys/param.h> */
+#define UT_NAMESIZE 32 /* see MAXLOGNAME in <sys/param.h> */
#define UT_LINESIZE 8
#define UT_HOSTSIZE 16
--- ./sys/sys/param.h.old 2010-03-02 17:17:18.000000000 +0900
+++ ./sys/sys/param.h 2010-03-02 17:17:36.000000000 +0900
@@ -75,7 +75,7 @@
#define MAXCOMLEN 19 /* max command name remembered */
#define MAXINTERP 32 /* max interpreter file name length */
-#define MAXLOGNAME 17 /* max login name length (incl. NUL) */
+#define MAXLOGNAME 33 /* max login name length (incl. NUL) */
#define MAXUPRC CHILD_MAX /* max simultaneous processes */
#define NCARGS ARG_MAX /* max bytes for an exec function */
#define NGROUPS (NGROUPS_MAX+1) /* max number groups */
More information about the freebsd-bugs