由于正则表达式错误导致“无法创建用户”

由于正则表达式错误导致“无法创建用户”

我正在运行 Ubuntu 12.10 桌面版 32 位。目前我只有一个用户,类型为管理员。我想创建另一个管理员用户,但我一直收到以下错误:

无法创建用户

GDBus.Error:org.freedesktop.Accounts.Error.Failed: 运行“/usr/sbin/adduser”失败:/usr/sbin/adduser 返回错误 (1):adduser:请输入与通过 NAME_REGEX[_SYSTEM] 配置变量配置的正则表达式匹配的用户名。使用 `--force-badname' 选项放宽此检查或重新配置 NAME_REGEX。

任何建议都值得赞赏。

答案1

您输入的用户名包含错误字符。尝试输入一个仅包含小写英文字母的简单用户名 -daniel可以,&&Daniel <*> Johnson##但不太好。

答案2

如果您尝试创建用户名,而该用户名包含 NAME_REGEX 文件中不可接受的字符,则通常会收到此消息。您可以尝试使用 GUI 再次更改用户名,也可以使用以下命令在命令行中放松检查。

sudo adduser --force-badname <username>

然后,如果您想将用户添加到 sudo 组,请运行以下命令。

sudo adduser <username> sudo

答案3

在 Debian 系统中,定义可接受用户名的正则表达式位于/etc/adduser.conf

一个典型的正则表达式(在我的系统上发现)是:

NAME_REGEX="^[a-z][-a-z0-9_]*\$"

我不想在正则表达式解析方面偏离主题太远,但插入符号 ^ 表示用户名的首字符必须介于小写 a 和小写 z 之间。其余字符可以是小写 az、0-9、连字符或下划线。如其他答案所述,您可以根据需要覆盖此检查。默认情况下,正则表达式区分大小写。

答案4

您可以通过使用 --force-badname 选项“adduser --force-badname Ali”来强制执行此操作,或者通过更改前面提到的配置文件中的正则表达式,但是......

通常不允许使用大写字母的原因是,它会导致用户名含糊不清和令人困惑,无论是对人类还是对程序而言。例如,如果允许或强制使用,John、john、JOHn 和 JOHN 都是单独的用户名(十六种变体,其中四个字母相同,大写和小写)。至于其他符号,在某些情况下,它可能会导致灾难性的严重后果——例如,使用管道符号“|”可能是一个非常糟糕的主意,因为它在命令行中意味着某种含义,有时对其他可能无法很好地处理用户名中的它的程序也是如此。对于大写字母,特别是标准电子邮件通常不区分大小写,如果以这种方式使用,可能会导致邮箱混淆或无法投递——通常会将所有字母恢复为小写,因为这是历史标准,更不用说 RFC 中包含的内容了。如果您超出这些界限,请小心。我并不是说永远不要这样做——但请注意并考虑到这只是实验性的,可能并不适合你的所有目的。

相关内容