usrck 命令

用途

验证用户定义的正确性。

语法

乌斯尔克 { -我 [ -b ] |  -n | -p  -t  -y } { 全部用户 ... }

描述

usrck 命令通过检查所有用户或者由 User 参数定义的用户的定义,验证用户数据库文件里用户定义的正确性。 如果指定的用户超过一个,名字间必须有一个空格。 必须选择一个标志来指示系统是否应该尝试修复错误属性。

命令首先检查 /etc/passwd 文件里的条目。 如果您指出系统应修正错误,那么会报告并禁用重复的用户名。 重复的标识符仅被报告,因为没有系统修复。 如果条目有少于六个独立冒号分隔的字段,那么条目仅被报告而不被修复。 usrck 命令下一步检查其他文件里规定用户的属性。

usrck 命令验证 /etc/passwd文件里列出的每一个用户名在 /etc/security/user文件、 /etc/security/limits 文件和 /etc/security/passwd 文件中是否有节。 usrck 命令也验证 /etc/group 文件里列出每一个组名在 /etc/security/group 文件里是否有节。 usrck 命令用 -y 标志为丢失的用户名和组名在安全文件里创建节。

注意:
  • 此命令将其消息写到标准错误
  • 如果已设置 domainlessgroups 属性,那么 usrck 命令将为轻量级目录访问协议 (LDAP) 用户抛出错误。

以下列出所有用户属性,已被检查的属性用符号表明。

描述
account_locked 不检查。 usrck 命令设置属性为 True 并禁用帐户。
admgroups 检查 admgroups 在用户数据库中是否有定义,如果指出系统需要修复错误,命令除去不在数据库中的所有组。
auditclasses 检查 auditclasses /etc/security/audit/config 文件里是否为用户定义。 如果指出系统应该修复错误,命令删除 /etc/security/audit/config 文件中未定义的 auditclass。
auth1 检查基本的认证方法。 如果方法不是 NONE 或者 SYSTEM,就必须在 /etc/security/login.cfg 文件里有定义,程序的属性必须存在且能被 root 用户执行。 如果指出系统应该修复错误,那么只要发现一个错误,系统就禁用用户帐户。
注: 不推荐使用并且不应使用 auth1 属性。
auth2 检查第二认证方法。 如果方法不是 NONE 或者 SYSTEM,就必须在 /etc/security/login.cfg 文件里有定义,程序的属性必须存在且能被 root 用户执行。 系统不修复。
注: 不推荐使用 auth2 属性,不应使用该属性。
core 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,200 块。
core_hard 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,200 块。
cpu 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,120 秒。
cpu_hard 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,120 秒。
DATA 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,1272 块(636K)。
data_hard 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,1272 块(636K)。
dictionlist 检查字典文件列表。 如果指出系统应该修复错误,命令删除用户数据库中不存在的所有字典文件。
expires 不检查。
fsize 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,200 块。
fsize_hard 确保值是切合实际的。 如果不是,该命令会将值复位为最小值,200 块。
gecos 不检查。
histexpire 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
histsize 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
通过读方式和搜索方式检查本地目录的存在和可访问性。 如果指出系统应该修复错误,那么只要发现一个错误,系统就禁用用户帐户。
标识 检查用户标识的唯一性。 如果指出系统应该修复错误,命令删除 /etc/passwd 文件中所有无效的条目。
login 不检查。
loginretries 检查用户尝试登录不成功的次数是否多于允许的数目。 如果是,系统禁用用户帐户。
logintimes 确保时间说明字符串是有效的。 如果指出系统应该修复错误,那么只要发现一个错误,系统就禁用用户帐户。
描述
maxage 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
maxexpired 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
maxrepeats 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
minage 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。 如果 minage 属性值比 maxage 属性值大,系统也显示要修复错误。
minalpha 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
mindiff 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
minlen 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。
minother 确保值是切合实际的。 如果表明系统应该修复错误,太大的值设置为最大可能值,太小的值设置为最小可能值。 如果 minage 属性值加 maxage 属性值比密码大小最大值更大,系统也会显示要修复错误。
名称 检查用户名的唯一性和复合性。 名字是由八个或更少的字符组成的唯一的字符串。 名字不能以 +(加号)、:(冒号)、-(减号)或 ~ (波浪号) 开始。 以 +(加号)或 -(减号)开始的名字已经假定为 NIS(网络信息服务)域中的名字,不允许有任何进一步的处理。 不能在字符串中包含冒号(:),也不出现所有或者缺省的关键字。 如果指出系统应该修复错误,只要发现一个错误,系统就禁用用户帐户且删除 /etc/passwd 文件中任何无效的条目。

usrck 命令验证 /etc/passwd 文件里列出的每一个用户名在 /etc/security/user 文件、/etc/security/limits 文件和 /etc/security/passwd 文件中是否有节。 当已有定义却丢失时,命令为每一个用户添加节。 usrck 命令另外验证 /etc/group 文件里列出的每一个组名在 /etc/security/group 文件里是否有节。

nofiles 确保值是切合实际的。 如果不是,将值复位为最小值,200。
nofiles_hard 确保值是切合实际的。 如果不是,将值复位为最小值,200。
pgrp 检查用户数据库里基本组的存在。 如果指出系统应该修复错误,那么只要发现一个错误,系统就禁用用户帐户。
pwdchecks 检查外部密码限制方法的列表。 如果指出系统应该修复错误,命令删除用户数据库中不存在的所有方法。
pwdwarntime 确保值是切合实际的。 如果不是,系统重新将值设为 maxage minage 之间的值。
rlogin 不检查。
rss 检查以确保值是切合实际的。 如果不是,该命令会将值复位为最小值,128 块 (64KB)。 系统未设置该值。
rss_hard 检查以确保值是切合实际的。 如果不是,该命令会将值复位为最小值,128 块 (64KB)。 系统未设置该值。
shell 通过执行方式检查 shell 的存在和可访问性。 如果指出系统应该修复错误,那么只要发现一个错误,系统就禁用用户帐户。
堆栈 (stack) 检查以确保值是切合实际的。 如果不是,该命令会将值复位为最小值,128 块 (64KB)。
stack_hard 检查以确保值是切合实际的。 如果不是,该命令会将值复位为最小值,128 块 (64KB)。
su 不检查。
sugroups 检查用户数据库文件中 sugroups 的存在。 如果指出系统应该修复错误,命令删除数据库中没有的所有组。
sysenv 不检查。
tpath 如果 tpath=always,检查以确保shell 的属性被标记为可信进程。 如果指出系统应该修复错误,那么只要发现一个错误,系统就禁用用户帐户。
ttys 在用户数据库文件中检查 ttys 的存在。 如果指出系统应该修复错误,命令删除数据库中没有的所有的 ttys。
usrenv 不检查。

如果修复涉及禁用用户帐户,那么请使用 chuser 命令将 account_locked 属性的值复位为 False。 可以用系统管理界面工具 (SMIT) 来运行 chuser 命令,输入:

smit chuser

Root 用户或者安全组里的成员可以通过除去 account_locked 属性或设置 account_locked 属性为 False 来再次恢复用户帐户。 Root 用户的帐户不能被 usrck 命令禁用。

一般情况下,sysck 命令调用 usrck 命令作为对信任系统安装验证的一部分。 如果 usrck 命令在用户数据库里找到任何一个错误,root 用户或安全组成员就执行 grpck 命令和 pwdck 命令。

usrck 命令检查数据管理的安全文件 /etc/passwd.nm.idx/etc/passwd.id.idx/etc/security/passwd.idx /etc/security/lastlog.idx,查看是否已经更新或者比相应的系统安全文件更新。 请注意,可以接受 /etc/security/lastlog.idx 并不比 /etc/security/lastlog 更新。 如果数据管理安全文件已经过期了,就会出现一个警告消息指出 root 用户应该运行 mkpasswd 命令了。

usrck 命令检查指定的用户是否登录。 如果用户因为太多不成功的登录尝试或密码过期不能登录, usrck 命令发布警告消息表明为什么不能登录。 如果指出系统应该修复错误,只要用户因为以上的原因不能登录,系统就禁用用户的帐户。

如果指定了 -l 标志,那么 usrck 命令将扫描所有用户或由 User 参数指定的用户以确定用户是否可以访问系统。 下表中列出了用来确定用户是否可以进行访问的条件:
表 1. 用户可访问性条件
条件 描述 原因
1 用户帐户被锁定。 用户的 account_locked 属性被设置为 true
2 User account is expired. 用户的 expires 属性所设置的值(过期时间)已过期。
3 User has too many consecutive failed login attempts. 用户的 unsuccessful_login_count 值大于用户的 loginretries 值。
4 用户没有密码。 用户的 password 字段在 /etc/password/etc/security/password 中为“*”。
5 不允许用户在此日期/时间登录。 当前的日期/时间不在用户的 logintimes 属性所定义的允许时间内。
6 /etc/nologin 文件存在。 /etc/nologin 文件阻止非 root 用户登录。
7 用户密码已过期,只有系统管理员才能更改它。 用户的密码已过期并且 ADMIN 密码标志已设置。
8 用户被拒绝登录到主机。 用户的 hostallowedloginhostsdeniedlogin 属性不允许访问当前主机。
9 应用程序拒绝用户访问。 用户的 loginrloginsu 属性被设置为 false,并且 rcmds 属性被设置为拒绝。 如果这些属性值中至少有一个但不是所有属性值都拒绝授权,那么认为用户可以访问部分系统。
10 用户被拒绝登录到终端。 用户的 ttys 属性不允许访问当前终端。 系统被视为对于用户是部分可访问的。

如果还指定了 -b 标志,那么输出由两个字段组成,即用户名和以制表符分隔的 16 位位掩码。 位掩码中的每个数字对应于上述“用户可访问性条件”表中的条件,最右边的数字表示条件 1。 如果条件的位的位置被设置为 1,那么对于该用户有关此条件的检查失败。 在输出中保留额外的数字以供将来使用。

下面是带有 -l 标志的 usrck 命令的示例:
# usrck -l testusr1 testusr2
3001-689 The system is inaccessible to testusr1, due to the following:
         User account is locked
         User denied login to terminal.
        
3001-689 The system is inaccessible to testusr2, due to the following:
         User account is expired.
         User has too many consecutive failed login attempts.
         User denied login to host.
以下是带有 -l-b 标志的 usrck 命令的示例:
# usrck -lb testusr1 testusr2
 testusr1       0000000000000001
 testusr2       0000000001000110

标志

描述
-b 报告无法访问系统的用户及原因,原因是以位掩码的格式显示的。 如果指定了 -b 标志,那么必须指定 -l 标志。
注: 位掩码不报告 条件 10 (用户拒绝登录到终端) ,因为在确定用户是否无法访问系统时,不能将此视为完整方案。 同样,如果至少有一个但并非所有属性的值都拒绝认证,那么位掩码不会报告 条件 9 (应用程序拒绝用户访问); 仅当所有四个属性值都拒绝认证时,才会报告此条件。
-l 扫描所有用户或由 User 参数指定的用户以确定用户是否可以访问系统。
-n 报告错误但不修复。
-p 修复错误但不报告。
-t 报告错误,询问是否要修复。
-y 修复错误且报告。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 用户定义文件是合适的。
> 0 发生错误,或者一个或多个用户定义文件中有错误。 返回以下错误代码:
EINVAL(22)
命令行参数无效
ENOENT(2)
一个或多个用户定义文件不存在
ENOTRUST(114)
数据库文件中的用户定义中存在错误或用户无法访问系统 (由 -l 选项找到)

安全性

访问控制:这个命令将执行 (x) 访问授权给 root 用户和安全组成员。 对于 root 用户命令是 setuid,并且有可信计算库属性。

访问的文件:

方式 文件
R /etc/passwd
R /etc/security/user
rw /etc/security/group
rw /etc/group
rw /etc/security/lastlog
rw /etc/security/limits
rw /etc/security/audit/config
rw /etc/security/login.cfg

审计事件:

事件 信息
USER_Check 用户、属性错误、状态
RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要验证用户数据库中是否存在所有用户,并报告 (但未纠正) 任何错误,请输入:
    usrck  -n ALL 
  2. 要从用户定义中删除那些不在用户数据库文件中且报告了任何错误的用户,请输入:
    usrck  -y ALL  
  3. 要显示无法访问系统的用户的列表,请输入:
    usrck -l ALL
  4. 要以位掩码格式显示无法访问系统的用户的列表,请输入:
    usrck -l -b ALL

文件

描述
/usr/bin/usrck 指定 usrck 命令的路径。
etc/passwd 包含基本用户属性。
/etc/security/user 包含用户的扩展属性。
/etc/group 包含组的基本属性。
/etc/security/group 包含组的扩展属性。
/etc/security/lastlog 包含用户最后一次登录的属性。
/etc/security/limits 包含用户进程资源限制。
/etc/security/audit/config 包含审计系统配置信息。
/etc/security/login.cfg 包含配置信息。