“请输入与通过 NAME_REGEX[_SYSTEM] 配置的正则表达式匹配的用户名”是什么意思?

“请输入与通过 NAME_REGEX[_SYSTEM] 配置的正则表达式匹配的用户名”是什么意思?

我是一家神经科学实验室的研究助理,对编程完全陌生。我只是想在下载的 ubuntu 系统中创建一个用户名,以便为其他人运行 MRI 分析程序。我甚至不明白这个基本命令是什么意思。我知道 regex 的意思是“正则表达式”,但如果我希望我的用户名是“Icymoguls”,有人能告诉我可接受的输入是什么吗,或者至少给我一个教程?我在介绍视频中了解了 /、~、cd 和 ls,但其他的就不知道了。谢谢

答案1

您看到的正则表达式错误基本上是说您尝试设置的用户名不符合系统为用户名中可以使用的字符设置的“规则”。默认情况下,Ubuntu 不允许在用户名中使用大写字母。您提供的用户名“Icymoguls”开头有一个大写字母,因此 Ubuntu 不会接受它。

Ubuntu 仅接受符合以下规则的用户名:

  • 必须以小写字母开头
  • 只能包含小写字母、下划线 (_) 和破折号 (-)
  • 可以选择以美元符号 ($) 结尾

正则表达式只是一个字符串,它显示了在另一个字符串中允许和不允许的内容。创建新用户时,Ubuntu 会根据其内置的用户名正则表达式检查潜在的用户名(如果^[a-z][-a-z0-9_]*\$您好奇的话!)。

答案2

我认为^[a-z][-a-z0-9_]*\$正则表达式应该是而不是^[a-z][-a-z0-9_]*\$?$。尾随的 $ 是可选的,并且正则表达式应该匹配整个字符串。

答案3

这种限制似乎是有原因的。

如果您尝试为脚本运行 systemd 服务,则它可能以 root 身份启动,而不是以用户身份启动。这是因为 systemd 无法将带点的用户(例如 domain.com 用户名)识别为有效用户,而是以 root 身份运行服务。尽管如此,这个问题仍然可以在 systemd 端修复,但仍存在风险。

此外,用户名中包含点还会对使用 chown 的脚本造成一些问题,因为 chown 仍接受点作为用户名和组名之间的分隔符。如果 chown 仍接受点,则将有脚本使用此表示法,如果用户名中包含点,则脚本将无法运行。

您仍然可以编辑/etc/adduser.conf和修改正则表达式或使用直接命令useradd,但您有责任创建主页-m标志和提供骨架-k SKEL_DIR并手动完成所有组。

相关内容