Bug#364909: [Pkg-shadow-devel] Bug#364909: useradd: confusion in man page; suggested fix

Alexander Gattin xrgtn at yandex.ru
Wed Apr 26 21:24:06 UTC 2006


Hi!

On Wed, Apr 26, 2006 at 08:36:51PM +0200, Nicolas François wrote:
> On Wed, Apr 26, 2006 at 04:10:36PM +0100, Reuben Thomas wrote:
> >        On Debian, the constraints on the username are lowered:
> >        Usernames must neither start by a dash ('-') nor contain a
> >        colon (':') or an end of line ('\n'). However, it is
> >        usually recommended to only use usernames that begin with a
> >        lower case letter or an underscore, and are only followed by
> >        lower case letters, underscores, dashes, and dollar signs. In
> >        regular expression terms: [a-z_][a-z0-9_-]*[$]

oops, actually should be smth. like:
                                            and are only followed by
        lower case letters, underscores, dashes, decimal digits and
	optionally terminated by dollar sign. In regular expression
	terms: ^[a-z_][a-z0-9_-]*[$]?$

> Thanks for pointing this.
> 
> The [a-z_][a-z0-9_-]*[$] regular expression is what is usually permitted.

Nicolas, looks that Reuben was right about this regexp
-- more correct one is ^[a-z_][a-z0-9_-]*[$]?$
i.e. ^[a-z_][a-z0-9_-]*\$?$

Let's look into original source code (libmisc/chkname.c):
	/*
	 * User/group names must match [a-z_][a-z0-9_-]*[$]
	 */
	if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_'))
		return 0;

	while (*++name) {
		if (!((*name >= 'a' && *name <= 'z') ||
		      (*name >= '0' && *name <= '9') ||
		      *name == '_' || *name == '-' ||
		      (*name == '$' && *(name + 1) == '\0')))
			return 0;
	}


Therefore, the manpage text should read not 'dollar signs'
but 'optional dollar sign' (at end of user/groupname).
Also, digits are indeed allowed but not mentioned there.

-- 
WBR,
xrgtn




More information about the Pkg-shadow-devel mailing list