那么,为什么下划线在 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/my
和user/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
.为什么说他们不被允许呢?