我正在编写一些可用于创建Linux用户帐户的Web UI页面.此Web UI将用于CentOS 6(源自RHEL 6).我发现有关什么构成有效Linux用户名的信息不一致且不完整.我去了源代码,检查了一个Linux shadow-utils源代码包,但我没有确保我所看到的版本实际上与CentOS 6的版本相同.
下面是我目前使用的代码片段,其中包括来自shadow-utils软件包版本4.1.4.3的注释的复制/粘贴,以及我自己的一些注释,以及Java正则表达式搜索,以便通过查看阴影来了解我的理解utils源码.
chkname.c中引用的"is_valid_name()"检查显然不是Linux上的useradd命令所使用的,因为注释(和C代码源)不允许以数字开头的名称.但是,useradd允许创建像"1234"这样的帐户.
我很感激从现在的调整到更正确的帮助,以及有关如何使用稍微不同的is_valid_name函数实现useradd.c的信息.
谢谢!艾伦
/**
* Define constants for use in isNameLinuxCompatible(...) method.
*
* The source for the Linux compatible user name rule is is_valid_name(...) a function in the "shadow" package
* for Linux. The source file for that function has a comment as follows:
* User/group names must match [a-z_][a-z0-9_-]*[$]
* That expression is a little loose/sloppy since
* (1) the trailing $ sign is optional, and
* (2) uppercase A-Z …Run Code Online (Sandbox Code Playgroud)