Author: zugschlus Date: 2005-02-07 19:37:28 +0100 (Mon, 07 Feb 2005) New Revision: 202 Modified: trunk/adduser trunk/debian/changelog trunk/doc/adduser.8 trunk/doc/adduser.conf.5 Log: * make username verification regexp configurable. (mh) Closes: #283110, #287535 Modified: trunk/adduser ==================================================================--- trunk/adduser 2005-02-05 14:36:07 UTC (rev 201) +++ trunk/adduser 2005-02-07 18:37:28 UTC (rev 202) @@ -118,6 +118,7 @@ $config{"quotauser"} = ""; $config{"dir_mode"} = "0755"; $config{"setgid_home"} = "no"; +$config{"name_regex"} = "^[a-z][-a-z0-9]*\$"; $action = $0 eq "addgroup" ? "addgroup" : "adduser"; @@ -725,23 +726,24 @@ # is name ok? sub checkname { my ($name) = @_; - if ($allow_badname && $name !~ /^[A-Za-z_][-_A-Za-z0-9]*\$?$/) { + if ($name !~ /^[-\.A-Za-z0-9]*\$?$/) { print STDERR -"$0: ",_("To avoid problems, the username should consist of a letter or -underscore followed by letters, digits, underscores, and dashes. For -compatibility with Samba machine accounts \$ is also supported at the -end of the username\n"); +"$0: ",_("To avoid problems, the username should consist of +letters, digits, underscores, periods and dashes. For compatibility with +Samba machine accounts \$ is also supported at the end of the username\n"); exit 1; } - elsif ($name !~ /^[a-z][a-z0-9\-]*$/) { - if (!$allow_badname) { - print STDERR -"$0: ",_("Please enter a username consisting of a lower case letter -followed by lower case letters and numbers. Use the `--force-badname'' -option to allow underscores, and uppercase.\n"); - exit 1; - } + if ($name !~ qr/$config{"name_regex"}/) { + if ($allow_badname) { print _("Allowing use of questionable username.\n") if ($verbose); + } + else { + print STDERR +"$0: ",_("Please enter a username matching the regular expression configured +via the name_regex configuration variable. Use the `--force-badname'' +option to relax this check or reconfigure name_regex.\n"); + exit 1; + } } } Modified: trunk/debian/changelog ==================================================================--- trunk/debian/changelog 2005-02-05 14:36:07 UTC (rev 201) +++ trunk/debian/changelog 2005-02-07 18:37:28 UTC (rev 202) @@ -1,8 +1,10 @@ adduser (3.61) UNRELEASED; urgency=low * NOT RELEASED YET + * make username verification regexp configurable. (mh) + Closes: #283110, #287535 - -- Marc Haber <mh+debian-packages@zugschlus.de> Sat, 5 Feb 2005 14:35:45 +0000 + -- Marc Haber <mh+debian-packages@zugschlus.de> Mon, 7 Feb 2005 17:57:56 +0000 adduser (3.60) experimental; urgency=low Modified: trunk/doc/adduser.8 ==================================================================--- trunk/doc/adduser.8 2005-02-05 14:36:07 UTC (rev 201) +++ trunk/doc/adduser.8 2005-02-07 18:37:28 UTC (rev 202) @@ -181,14 +181,12 @@ SSH RSA keys, but not using password authentification. .TP .B \-\-force\-badname -By default, user and group names are required to consist of a -lowercase letter followed by zero or more lowercase letters or numbers. Dashes -in user and group names are accepted as well. -This option forces +By default, user and group names are checked against a configurable +regular expression. This option forces .B adduser and .B addgroup -to be more lenient. +to apply only a weak check for validity of the name. .TP .B \-\-gecos GECOS Set the gecos field for the new entry generated. adduser will not ask Modified: trunk/doc/adduser.conf.5 ==================================================================--- trunk/doc/adduser.conf.5 2005-02-05 14:36:07 UTC (rev 201) +++ trunk/doc/adduser.conf.5 2005-02-07 18:37:28 UTC (rev 202) @@ -104,6 +104,12 @@ \fBQUOTAUSER\fP If set to a nonempty value, new users will have quotas copied from that user. The default is empty. +.TP +\fBUSER_REGEX\fB +User names are checked against this regular expression. If the name +doesn''t match this regexp, user creation is refused unless +--force-badname is set. With --force-badname set, only weak checks are +performed. The default is the most conservative ^[a-z][-a-z0-9]*\$. .SH FILES .I /etc/adduser.conf .SH SEE ALSO