mkuser 命令

用途

创建新的用户帐户。

语法

mkuser [ -R load_module ] [-a ] [ 属性= ...] 姓名

描述

mkuser 命令创建新用户帐户。 Name 参数必须是唯一字符串 (其长度可由管理员使用 chdev 命令进行配置)。 您不能在用户名中使用 ALLdefault 关键字。 缺省情况下,mkuser 命令创建标准用户帐户。 创建 管理用户帐户,指定 -a 标志。

要创建一个使用另一种识别和身份验证(I&A)机制的用户,可以使用 -R 标志来指定 I&A 加载模块。 如果不使用 -R 标志创建用户,那么将在本地创建用户。 装入模块在 /usr/lib/security/methods.cfg 文件中定义。

mkuser 命令不能为用户创建密码信息。 使用 *(星号)初始化password 字段。 以后,这个字段用 passwdpwdadm 命令设置。 新帐户是禁用的,直到用 passwdpwdadm 命令 添加认证信息到 /etc/security/passwd 文件。

您也可以使用系统管理界面工具 (SMIT) smit mkuser 快速路径来运行该命令。

mkuser 命令始终检查目标用户注册表以确保新帐户的标识对于目标注册表是唯一的。 也可以配置 mkuser 命令来检查使用 dist_uniqid 系统属性的系统的所有用户注册表。 dist_uniqid 系统属性是 /etc/security/login.cfg 文件的 usw 节的属性之一,可以使用 chsec 命令来管理。

dist_uniqid 系统属性具有以下值:
  • never -不针对非目标注册表检查标识冲突。 这是缺省设置。
  • always -针对所有其他注册表检查标识冲突。 如果在目标注册表和任何其他注册表之间检测到冲突,帐户创建或修改会失败。
  • uniqbyname -针对所有其他注册表检查标识冲突。 仅当要创建的帐户与现有帐户同名时才允许注册表间存在冲突。
注: 无论 dist_uniqid 系统属性如何,始终会强制实施目标注册表中的标识冲突检测。

uniqbyname 系统属性设置对两个注册表工作得很好。 如果注册表超过两个,并且在两个注册表之间已存在标识冲突,当在第三个注册表中用冲突的标识值创建一个新帐户时,没有指定 mkgroup 命令的行为。 新帐户的创建可能成功也可能失败,取决于检查注册表所依据的顺序。

标识冲突检查仅在本地注册表和远程注册表之间或远程注册表之间强制执行标识唯一性。 在远程注册表中新创建的帐户和使用同一远程注册表的其他系统中现有的本地用户之间,不保证标识唯一。 如果在命令运行时无法访问远程注册表,mkuser 命令将忽略该远程注册表。

创建用户名的限制

为防止不一致的登录,应该避免用户名完全使用大写字母。 当 mkuser 命令支持多字节用户名,建议限制用户名使用 POSIX 可移植文件名称符集的字符。

要确保您的用户数据库保持不受损坏,您在命名用户时必须小心。 用户名不能以 - (短划线)、+ (加号)、 @ (at 符号) 或 ~(波浪号)开头。 不能在用户名中使用关键字 ALL default。 另外,不要在用户名字符串中使用以下任一字符:

描述
: 冒号
" 双引号
# 镑符号
, 逗号
= 等于号
\ 反斜杠
/ 斜杠
? 问号
' 单引号
` 右引号

最后,Name 参数 不能包含空格、制表符或换行符。

标志

描述
-a 指定用户是管理员。 只有 root 用户能使用该标志或改变管理用户的属性。
用户名 指定该用户是新用户。
-R 加载模块 指定可加载的 I&A 模块来创建用户。

参数

描述
属性= 初始化用户属性。 请参阅 chuser 命令以获取有效的属性和值。
名称 指定唯一字符串。 此字符串的长度由管理员使用 chdev 命令设置。

退出状态

本命令返回以下退出值:
描述
重大安全事件数量 该命令运行成功,已完成请求的所有更改。
> 0 发生错误。 打印的错误消息列示了有关这种类型的故障的更多详细信息。

安全性

访问控制:此命令仅应对 root 用户和安全组的成员授予执行 (x) 访问权。 该命令应该作为一个程序安装在“可信计算库”(TCB)上。 带有 setuid (SUID) 位设置的 root 用户应该拥有此命令。

RBAC 用户和可信AIX用户请注意:此命令可执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 要获取与此命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。
要获取命令的全部功能,除 accessauths 以外,角色还应具有以下权限:
  • aix.security.user.audit
  • aix.security.role.assign
  • aix.security.group.change
  • aix.security.user.change

访问的文件:

方式 文件
rw /etc/passwd
rw /etc/security/user
rw /etc/security/user.roles
rw /etc/security/limits
rw /etc/security/environ
rw /etc/group
rw /etc/security/group
R /usr/lib/security/mkuser.default
X /usr/lib/security/mkuser.sys

审计事件:

事件 信息
USER_Create 用户

限制

创建的用户可能不被所有的可加载 I&A 模块支持。 如果可加载模块 I&A 不支持创建用户,将会报错。

示例

  1. 要创建davis/usr/lib/security/mkuser.default 文件中具有缺省值的用户帐户,请输入:
    mkuser davis
  2. 要创建davis帐户davis作为管理员,请输入:
    mkuser -a davis
    只有 root 用户或具有 UserAdmin 权限的用户才能创建davis作为管理用户。
  3. 要创建 davis用户帐户并将 su 属性设置为值false,类型:
    mkuser su=false davis
  4. 要创建davis通过 LDAP 装入模块标识和认证的用户帐户,请输入:
    mkuser -R LDAP davis

错误代码

描述
重大安全事件数量 命令成功。
EINVAL 用户名参数无效(包含无效字符)。
EACCES 调用者没有对数据库文件的写访问权。
EPERM 如果指定了 -a 标志并且调用者不是 root 用户,那么用户标识和认证将失败。
EEXIST 用户已存在。
ENAMETOOLONG 用户名太长。
其他 errno 存在其他系统错误。

文件

描述
/usr/bin/mkuser 包含 mkuser 命令。
/usr/lib/security/mkuser.default 包含新用户的缺省值。
/etc/passwd 包含用户的基本属性。
/etc/security/user 包含用户的扩展属性。
/etc/security/user.roles 包含用户的管理角色属性。
/etc/security/passwd 包含密码信息。
/etc/security/limits 定义每个用户的资源配额和限制。
/etc/security/environ 包含用户的环境属性。
/etc/group 包含组的基本属性。
/etc/security/group 包含组的扩展属性。
/etc/security/.ids 包含标准和管理用户标识和组标识。