93 lines
3.1 KiB
Plaintext
Executable File
93 lines
3.1 KiB
Plaintext
Executable File
Goal: Relaxed usernames/groupnames checking patch.
|
|
|
|
Status wrt upstream: Debian specific. Not to be used upstream
|
|
|
|
Details:
|
|
Allows any non-empty user/grounames that don't contain ':' and '\n'
|
|
characters and don't start with '-'. This patch is more restrictive
|
|
than original Karl's version. closes: #264879
|
|
Also closes: #377844
|
|
|
|
Comments from Karl Ramm (shadow 1:4.0.3-9, 20 Aug 2003 02:06:50 -0400):
|
|
|
|
I can't come up with a good justification as to why characters other
|
|
than ':'s and '\0's should be disallowed in group and usernames (other
|
|
than '-' as the leading character). Thus, the maintenance tools don't
|
|
anymore. closes: #79682, #166798, #171179
|
|
|
|
--- a/libmisc/chkname.c
|
|
+++ b/libmisc/chkname.c
|
|
@@ -48,6 +48,7 @@
|
|
|
|
static bool is_valid_name (const char *name)
|
|
{
|
|
+#if 0
|
|
/*
|
|
* User/group names must match [a-z_][a-z0-9_-]*[$]
|
|
*/
|
|
@@ -66,6 +67,20 @@
|
|
return false;
|
|
}
|
|
}
|
|
+#endif
|
|
+ /*
|
|
+ * POSIX indicate that usernames are composed of characters from the
|
|
+ * portable filename character set [A-Za-z0-9._-], and that the hyphen
|
|
+ * should not be used as the first character of a portable user name.
|
|
+ *
|
|
+ * Allow more relaxed user/group names in Debian -- ^[^-:\s][^:\s]*$
|
|
+ */
|
|
+ if (!*name || isspace(*name))
|
|
+ return 0;
|
|
+ do
|
|
+ if (*name == ':' || isspace(*name))
|
|
+ return 0;
|
|
+ while (*++name);
|
|
|
|
return true;
|
|
}
|
|
--- a/man/useradd.8.xml
|
|
+++ b/man/useradd.8.xml
|
|
@@ -618,12 +618,19 @@
|
|
</para>
|
|
|
|
<para>
|
|
- Usernames must start with a lower case letter or an underscore,
|
|
+ It is usually recommended to only use usernames that begin with a lower case letter or an underscore,
|
|
followed by lower case letters, digits, underscores, or dashes.
|
|
They can end with a dollar sign.
|
|
In regular expression terms: [a-z_][a-z0-9_-]*[$]?
|
|
</para>
|
|
<para>
|
|
+ On Debian, the only constraints are that usernames must neither start
|
|
+ with a dash ('-') nor contain a colon (':') or a whitespace (space: ' ',
|
|
+ end of line: '\n', tabulation: '\t', etc.). Note that using a slash
|
|
+ ('/') may break the default algorithm for the definition of the
|
|
+ user's home directory.
|
|
+ </para>
|
|
+ <para>
|
|
Usernames may only be up to 32 characters long.
|
|
</para>
|
|
</refsect1>
|
|
--- a/man/groupadd.8.xml
|
|
+++ b/man/groupadd.8.xml
|
|
@@ -224,12 +224,17 @@
|
|
<refsect1 id='caveats'>
|
|
<title>CAVEATS</title>
|
|
<para>
|
|
- Groupnames must start with a lower case letter or an underscore,
|
|
+ It is usually recommended to only use groupnames that begin with a lower case letter or an underscore,
|
|
followed by lower case letters, digits, underscores, or dashes.
|
|
They can end with a dollar sign.
|
|
In regular expression terms: [a-z_][a-z0-9_-]*[$]?
|
|
</para>
|
|
<para>
|
|
+ On Debian, the only constraints are that groupnames must neither start
|
|
+ with a dash ('-') nor contain a colon (':') or a whitespace (space:' ',
|
|
+ end of line: '\n', tabulation: '\t', etc.).
|
|
+ </para>
|
|
+ <para>
|
|
Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long.
|
|
</para>
|
|
<para>
|