linux 用户名建议符合[a-z_][a-z0-9_-]*[$]
正则表达式,并且长度不超过 32 位
简单来说,下面的字符组成 linux 用户名,是合法的。
The set of characters from which portable filenames are constructed.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -
我们可以创建一个
但是,一般不建议在用户名中使用.
号。
steve.txt
是一个个人文件,但如果一个人叫 steve.jobs
,steve.jobs.txt
就会产生歧义20211201.steve.c31bcf
和 20211201.steve.jobs.c31bcf
会容易在切分代码时出现错误,hash = version.split(",")[2]
获取到jobs
非预期结果。相反,大部分人都习惯把-
和_
连接再一起的 string 看作是一个整体,例如 steve_jobs
和 steve-jobs
相比 steve.jobs
更“像”一个用户名
所以:即使.
是用户名的合法字符,但不推荐实际创建用户时使用。
In Debian, shadow-utils 4.1, there is a is_valid_name function in chkname.c:
static bool is_valid_name (const char *name)
{
/*
* User/group names must match [a-z_][a-z0-9_-]*[$]
*/
if (('\0' == *name) ||
!((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
return false;
}
while ('\0' != *++name) {
if (!(( ('a' <= *name) && ('z' >= *name) ) ||
( ('0' <= *name) && ('9' >= *name) ) ||
('_' == *name) ||
('-' == *name) ||
( ('$' == *name) && ('\0' == *(name + 1)) )
)) {
return false;
}
}
return true;
}
adduser command
adduser: 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.
This is the default NAME_REGEX
.
NAME_REGEX="^[a-z][-a-z0-9]*\$"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。