帐户标识

每个用户帐户都有一个唯一标识该帐户的数字标识。 AIX® 操作系统根据帐户标识授予授权。

标识相同的帐户实质上是同一帐户,知道这一点是很重要的。 创建用户和组时, AIX mkusermkgroup 命令始终检查目标注册表,以确保要创建的帐户与现有帐户没有标识冲突。

还可以使用 dist_uniqid 系统属性将系统配置为在帐户创建期间检查所有用户 (组) 注册表。 可以使用 chsec 命令来管理 /etc/security/login.cfg 文件中 usw 节的 dist_uniqid 属性。 要配置系统,使之总是检查所有注册表以确定其中是否存在标识冲突,请运行:
# chsec -f /etc/security/login.cfg -s usw -a dist_uniqid=always
dist_uniqid 属性有三个有效值:
never
该值不对非目标注册表检查标识冲突(缺省值)。
always
该值对所有其他注册表检查标识冲突。 如果在目标注册表和任何其他注册表之间检测到冲突,那么 mkusermkgroup)命令将选择一个未由任何注册表使用的唯一标识。 仅当在命令行中指定了标识值时该命令才会失败(例如,mkuser id=234 foo,而在任何注册表中的某位用户已使用标识 234 时)。
uniqbyname
该值对所有其他注册表检查标识冲突。 仅当要创建的帐户与 mkuser id=123 foo 类型的命令的现有帐户同名时,才允许注册表之间存在冲突。 如果命令行中未指定该标识,那么新帐户可能与另一注册表中具有相同名称的现有帐户的标识不同。 例如,标识为 234 的 acct1 是一个本地帐户。 创建 LDAP 帐户 acct1 时,mkuser -R LDAP acct1 可能为该 LDAP 帐户选择一个唯一标识 235。 结果是 acct1 (本地标识为 234) 和 acct1 (LDAP 标识为 235)。
注: 无论 dist_uniqid 属性如何,始终会强制实施目标注册表中的标识冲突检测。

uniqbyname 值在处理两个注册表时很合适。 对于更多注册表并且当两个注册表之间已存在标识冲突时,如果使用冲突的标识值在第三个注册表中创建新帐户,mkusermkgroup)的行为并未明确说明。 新帐户创建的成功与否取决于检查注册表的顺序。

例如,假设系统配置为使用三个注册表:本地、LDAP 和 DCE。 在 LDAP 中存在一个 acct1 帐户,而在 DCE 中存在一个 acct2 帐户,都使用标识 234。 当系统管理员运行 mkuser -R files id=234 acct1 (mkgroup -R files id=234 acct1) 命令以创建具有 uniqbyname 值的本地帐户时, mkuser (mkgroup) 命令首先检查 LDAP 注册表, 并发现标识 234 由 LDAP 帐户 acct1获取。 因为要创建的帐户具有相同帐户名称,mkusermkgroup)命令将使用标识 234 成功创建本地帐户 acct1。 如果首先检查 DCE 注册表,那么 mkusermkgroup)命令发现标识 234 已由 DCE 帐户 acct2 使用,而本地帐户 acct1 的创建将失败。 标识冲突检查将强制执行本地注册表和远程注册表之间或远程注册表之间的标识唯一性。 但不保证在远程注册表上新创建的帐户与使用同一远程注册表的其他系统上的现有本地用户之间的标识唯一性。 如果 mkusermkgroup)命令在运行时无法访问远程注册表,那么将跳过该注册表。