为什么某些发行版的用户名中不允许使用下划线(例如 Debian)

为什么某些发行版的用户名中不允许使用下划线(例如 Debian)

那么,为什么下划线在 Debian(可能还有其他发行版)中被认为是用户名的坏字符,而adduser在 Ubuntu 中它已从 NAME_REGEX 中删除了呢?

答案1

POSIX指定便携式的使用用户名和组名的字符数。
_ - .是允许的字符,NAME_REGEX检查用户名是否只包含指定的字符。发行版开发人员定义是否拒绝更多字符。例如,Ubuntu 默认情况下确实禁止使用.

添加此限制可以避免干扰其他可能解释特殊字符的系统工具。考虑一下变量$PATH,当您有一个具有该名称的用户my:user并将您的主目录添加到$PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

目录/home/myuser/bin可能不存在。此外,/etc/passwd还会:多出两个。

编辑:
Debian adduser(版本 3.110)用于/^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/检查用户名,_ 只要NAME_REGEX不禁止就允许。

答案2

类似问题已经回答过这里

理论上,您几乎可以使用任何您想要的 ASCII 字符作为用户名,但是,为了避免某种错误(如上一篇文章中提到的错误),您可以设置正则表达式来避免某些问题。

答案3

我正在使用 Debian Squeeze,并设法创建一个带有下划线的用户,adduser user_1.为什么说他们不被允许呢?

相关内容