用户文件

用途

包含扩展的用户属性。

描述

user文件包含扩展用户属性。 user文件是一个 ASCII 文件,其中包含用户的属性句子。 mkuser命令在该文件中为每个新用户创建一个分节,并使用 "/usr/lib/security/mkuser.default文件中定义的默认属性初始化其属性。

/etc/security/user文件中的每一节都由用户名和冒号(:)标识,并包含 "Attribute=Value形式的属性。 每个属性值对都由换行符结束,并且每个节都由一个附加的换行符结束。 有关一节的示例,请参阅示例部分。

该文件支持缺省节。 如果没有为用户定义某个属性,那么将使用该属性的缺省值。

属性

如果具有适当的权限,可以设置以下用户属性:

表 1. 属性
描述
account_locked 指示用户帐户是否已锁定。 以下是 "account_locked字段的可能值:
true
用户账户已锁定。 值 yestruealways 是等价的。 拒绝用户访问系统。
false
用户账户未锁定。 值 nofalsenever 是等价的。 允许用户访问系统。 默认值为 "false
admin 定义用户的管理状态。 以下是 "admin字段的可能值:
true
用户是管理员。 只有根用户才能更改被定义为管理员的用户的属性。
false
用户不是管理员。 默认值为 "false
admgroups 列出用户管理的组。 Value 参数是逗号分隔的组名称列表。 有关组名的其他信息,请参阅 "/etc/security/group文件的 "adms属性。
auditclasses 列示用户的审计类。 Value 参数是以逗号分隔的类的列表,或者是用于指示所有审计类的值 ALL
auth1 列出用于认证用户的其他必需方法。 auth1属性已被弃用,今后的版本可能不再支持该属性。 必须使用 "SYSTEM属性。 如果 "auth1属性指定的任何方法失败,则身份验证过程失败。

Value参数是以逗号分隔的方法名称对列表,格式为 "Method;NameMethod 参数是认证方法的名称。 Name参数是要进行身份验证的用户名。 如果未指定Name参数,则使用已通过身份验证的用户名。

auth1和 "auth2属性的有效验证方法在 "/etc/security/login.cfg文件中定义。

auth2 列出用于认证用户的其他可选方法。 auth2属性已被弃用,今后的版本可能不再支持该属性。 必须使用 "SYSTEM属性。 如果 "auth2属性指定的任何方法失败,身份验证过程不会失败。

Value参数是以逗号分隔的方法名称对列表,格式为 "Method;NameMethod 参数是认证方法的名称。 Name参数是要进行身份验证的用户名。 如果未指定Name参数,则使用已通过身份验证的用户名。

core_compress 启用或禁用核心文件压缩。 该属性的有效值为"开 ""关"。 当 "core_compress属性值为"开 "时,将启用核心文件压缩;否则,将禁用压缩。 缺省值为 off。
core_path 启用或禁用核心文件路径规范。 该属性的有效值为 "开 "和 "关"。 如果 "core_path字段的值为 "开",则核心文件将放置在 "core_pathname字段指定的目录中。 否则,核心文件将放在用户的当前工作目录下。 缺省值为 off
core_pathname 如果 "core_path属性设置为开,则指定用于放置核心文件的位置。 如果未设置 "core_pathname文件,且 "core_path文件设置为"开",则核心文件将放置在用户的当前工作目录中。 该属性限制为 256 个字符。
core_naming 选择核心文件命名策略。 该属性的有效值为 On 和 Off。 在表单 core.pid.time 中,值 On 启用核心文件命名,与 CORE_NAMING 环境变量执行的操作相同。 值 Off 使用 core 的缺省名称。
daemon 表示Name参数指定的用户是否可以使用 "cron守护进程或 "src(系统资源控制器)守护进程执行程序。 以下是 "daemon字段的可能值:
true
用户可以启动 "cron和 "src会话。 缺省值为 true
false
用户无法启动 "cron和 "src会话。
dce_export 在 DCE 导出操作期间,允许 DCE 注册表用 DCE 用户信息覆盖本地用户信息。 以下是 "dce_export字段的可能值:
true
会覆盖本地用户信息。
false
不会覆盖本地用户信息。
dictionlist 定义组合限制在检查新密码时使用的密码字典。
密码字典是以逗号分隔的绝对路径名的列表,从左到右进行求值。 所有字典文件和目录都必须对除 root 用户之外的所有用户进行写保护。 字典文件的格式为每行一个单词。 该词在第一列开始,并以换行符终止。 对于密码 7 仅支持 7 位 ASCII 字。 如果系统中安装了文本处理功能,建议使用 "/usr/share/dict/words字典文件。 通过在字典文件中添加关键字 $USER,可以禁止在密码中使用用户名。 关键字 "USER不能是字典文件中任何词条或模式的一部分。 如果在字典文件中提到了正则表达式,那么在密码中也可能不允许使用该正则表达式。 区分字典文件中的单词和模式。 模式的第一个字符为 "*。 例如,如果管理员希望禁止任何以 "123结尾的密码,那么管理员可以在字典文件中提及以下条目:
*.*123

首先,"*用于表示模式条目,其余部分是模式,即 ".*123。 如果系统中安装了文本处理功能,建议使用 "/usr/share/dict/words字典文件。

minloweralpha 定义新密码中小写字母字符的最少数量。 该值是十进制整数字符串。 缺省值为 1。 范围为 0 至 PW_PASSLEN。
minupperalpha 定义新密码中大写字母字符的最少数量。 该值是十进制整数字符串。 缺省值为 1。 范围为 0 至 PW_PASSLEN。
mindigit 定义必须在新密码中的最小数位数。 该值是十进制整数字符串。 缺省值为 1。 范围为 0 至 PW_PASSLEN。
minspecialchar 定义新密码中允许使用的特殊字符的最少数量。 该值是十进制整数字符串。 缺省值为 1。 范围为 0 至 PW_PASSLEN。
备注 开始更改
  • If the value of the mindigit or minspecialchar attribute is greater than the minother attribute, the greater attribute is reduced to a value that is equal to the minother attribute.
  • If the sum of the mindigit and minspecialchar attributes is greater than the value of the minother attribute, the value of the minspecialchar attribute is reduced to the difference between the minother and mindigit attributes.
结束更改
efs_adminks_access 定义 "efs_admin密钥存储位置。 可能的值是 "file
file
密钥存储在 "/var/efs/efs_admin/文件中。
注意:该属性仅在系统启用加密文件系统EFS) 时有效。
efs_allowksmodechangebyuser 定义用户是否可以更改该方式。 可能的值如下所示:
yes
用户可以更改密钥存储模式(使用 "efskeymgr命令)。
no
用户不能更改密钥存储模式(使用 "efskeymgr命令)。
注: 仅当系统已启用 EFS时,此属性才有效。
efs_file_algo 用于定义用于生成文件保护密钥的算法。 可能的值如下所示:
  • AES_128_CBC
  • AES_192_CBC
  • AES_256_CBC
注: 仅当系统已启用 EFS时,此属性才有效。
efs_initialks_mode 定义用户密钥库的初始方式。 以下是可能的值:
guard
当密钥库处于 root 用户保护方式时,如果没有此密钥库的正确密码,那么无法检索此密钥库中包含的密钥。
admin
当密钥库处于根管理员模式时,可使用EFS管理密钥检索该密钥库中包含的密钥。
注意:
  • 仅当系统已启用 EFS时,此属性才有效。
  • efs_initialks_mode属性定义了密钥存储的初始模式。 使用 "chuser命令、"chgroup命令、"chsec命令或手动编辑更改该值不会改变密钥存储的模式。 仅在创建密钥存储时使用该属性。 在删除密钥存储并创建新的密钥存储之前,请勿再次使用该属性。 要更改密钥存储模式,请使用 "efskeymgr命令。
efs_keystore_access 定义用户密钥库位置。 以下是可能的值:
none
没有密钥库。
file
密钥存储在 "/var/efs/users/目录下。
注: 仅当系统已启用 EFS时,此属性才有效。
efs_keystore_algo 定义在创建密钥库时用于生成用户专用密钥的算法。 可能的值如下所示:
  • RSA_1024
  • RSA_2048
  • RSA_4096
注意:
  • 仅当系统已启用 EFS时,此属性才有效。
  • 使用 "chuser命令、"chgroup命令、"chsec命令或手动编辑更改该属性值不会重新生成私钥。 仅在创建密钥存储时使用该属性。 在删除密钥存储并创建新的密钥存储之前,请勿再次使用该属性。 要更改密钥算法,请使用 "efskeymgr命令。
expires 标识帐户的截止日期。 参数是MMDDhhmmyy格式的 10 个字符字符串,其中MM表示月,DD 表示日,hh表示时,mm表示分,yy表示 1939 年至 2038 年的最后两位数。 所有字符都是数字。 如果 Value 参数为 0,那么帐户不到期。 缺省值为 0。 更多信息,请参阅 "date命令。
histexpire 指定用户不能重复使用密码的期限(以周为单位)。 该值是十进制整数字符串。 缺省值为 52。
histsize 指定用户不能重复使用的密码次数。 该值是十进制整数字符串。 缺省值为 4。
login 指示用户是否可以使用 login 命令登录到系统。 以下是可能的值:
true
用户可以登录到系统。 默认值为 "true
false
用户不能登录到系统。
logintimes 指定允许用户访问系统的时间、日期或两者。 该值是以逗号分隔的以下格式的条目列表:
[!]:time-time
        -or-
[!]day[-day][:time-time]
        -or-
[!]date[-date][:time-time]

The variable must be one digit between 0 and 6 that represents one of the days of the week. 0 (零) 表示星期天, 6 表示星期六。

时间变量为 24 小时军用时间(17:00 为下午 5:00)。 需要前导零。 例如,您必须输入 "0800,而不是 "800时间变量的长度必须为四个字符,并且必须有一个前导冒号(:)。仅包含时间说明的条目适用于每一天。 时间值的开始时间必须小于结束时间值。

日期变量是一个四位数字符串,格式为mmdd,其中mm代表日历月份,dd代表日数。 例如,"0001代表 1 月 1 日。 如果条目不是一个范围,dd的值可能是 "00,表示整个月,或者条目表示该月的第一天或最后一天,取决于它是作为范围的开始还是结束的一部分出现。 例如,"0000表示整个一月。 条目 "0600表示整个 7 月份。 条目 "0311-0500表示 4 月 11 日至 6 月最后一天。

该列表中的条目指定了允许或拒绝用户访问系统的时间。 前面没有 "!(感叹号)的条目允许访问,称为 ALLOW 条目。 前缀为 "!(感叹号)的条目拒绝访问系统,称为 DENY 条目。 !操作符只适用于一个条目,而不是整个限制列表。 它必须出现在每个条目的开头。

loginretries 定义在系统锁定帐户之前,最后一次成功登录之后允许的未成功登录尝试数。 该值是十进制整数字符串。 零或负值指示不存在限制。 一旦用户的账户被锁定,用户就无法登录,直到系统管理员将 "/etc/security/lastlog文件中用户的 "unsuccessful_login_count属性重置为小于 "loginretries的值。 要重置 "unsuccessful_login_count属性,请输入以下命令:
chsec -f /etc/security/lastlog -s username -a \
unsuccessful_login_count=0
maxage 定义密码的最长寿命(以周为单位)。 到该时间必须更改密码。 该值是十进制整数字符串。 缺省值为 13 ,表示最长寿命为 13 周。
maxexpired 定义用户可以更改过期密码的 "maxage值之外的最长时间(以周为单位)。 在该定义的时间后,只有管理用户可以更改密码。 该值是十进制整数字符串。 缺省值为 4。 如果 maxexpired 属性为 0,那么当达到 maxage 值时,密码到期。 如果 maxage 属性为 0,那么忽略 maxexpired 属性。
maxrepeats 定义新密码中字符可以重复的最大次数。 由于值 0 是无意义的,所以缺省值 8 指示没有最大次数。 该值是十进制整数字符串。
minage 定义在可以更改之前,密码必须的最短寿命(以周为单位)。 该值是十进制整数字符串。 缺省值为 4。
minalpha 定义必须在新密码中的最小字母字符数。 该值是十进制整数字符串。 缺省值为 2。
mindiff 定义新密码中需要包含的旧密码中没有的字符的最小数量。 该值是十进制整数字符串。 缺省值为值 0,表示无最小值。
minlen 定义密码的最小长度。 该值是十进制整数字符串。 缺省值为 10。 允许的最大值为 "PW_PASSLEN属性。 该属性由 "minalpha和 "minother属性值的总和决定。 如果这些值的总和大于 "minlen属性值,则最小长度将设置为结果。
注:"PW_PASSLEN属性在 "/usr/include/userpw.h中定义。 PW_PASSLEN属性的值由 "/etc/security/login.cfg中定义的全系统密码算法决定。

密码的最小长度由 "minlen属性决定,且不得大于 "PW_PASSLEN属性。 If the sum of the minalpha and minother attributes is greater than the PW_PASSLEN attribute, then the minother attribute is reduced to the difference of the PW_PASSLEN and minalpha attributes.

minother 定义新密码中允许使用的最少非字母字符数。 该值是十进制整数字符串。 缺省值为值 0,表示无最小值。
备注 开始更改
  • If the value of the mindigit or minspecialchar attribute is greater than the minother attribute, the greater attribute is reduced to a value that is equal to the minother attribute.
  • If the sum of the mindigit and minspecialchar attributes is greater than the value of the minother attribute, the value of the minspecialchar attribute is reduced to the difference between the minother and mindigit attributes.
结束更改
projects 定义用户进程可分配给的项目列表。 该值是逗号分隔的项目名称的列表,并且从左到右进行求值。 项目名称必须是系统中定义的有效项目名称。 如果在列表中发现无效的项目名称,"user命令会将其报告为错误。
pwdchecks 定义对新密码执行的密码限制方法。 该值是逗号分隔的方法名的列表,并且从左到右评估。 方法名是绝对路径名或相对于可执行装入模块的 /usr/lib 路径名。
pwdwarntime 定义系统发出警告要求密码更改之前的天数。 该值是十进制整数字符串。 零或负值指示不发出任何消息。 该值必须小于 "maxage和 "minage属性之差。 大于此差值的值将被忽略,当达到 "minage值时将发出一条信息。
registry 定义在其中管理用户的认证注册表。 它用于将远程管理的用户解析为本地管理的域。 当网络服务意外故障或网络数据库在本地复制时,可能会出现这种情况。 示例值为 filesNISDCE
rlogin 允许使用 "telnet或 "rlogin命令从远程访问账户。 以下是可能的值:
true
可以远程访问用户帐户。 默认值为 "true
false
无法远程访问该用户帐户。
su 指示另一个用户是否可以使用 su 命令切换到指定的用户帐户。 以下是 "su字段的可能值:
true
另一个用户可以切换到指定的帐户。 默认值为 "true
false
另一个用户不能切换到指定的帐户。
sugroups 列出可使用 "su属性切换到指定用户帐户的组。 价值参数是一个以逗号分隔的组名列表,或者用 "ALL表示所有组。 组名前的 "!(感叹号)表示排除该组。 如果未指定该属性,所有组都可以通过 "su属性切换到该用户账户。
SYSTEM

定义用于用户的系统认证机制。 该值可能是一个表达式,用于描述要使用的身份验证方法,也可能是关键字 "NONE

无论 "auth1和 "auth2属性的值如何,"SYSTEM机制始终用于验证用户身份。 如果 "SYSTEM属性设置为 "NONE,则只能使用 "auth1和 "auth2属性进行身份验证。 如果 "auth1和 "auth2属性为空或被忽略,就像 TCP 套接字守护进程一样("ftpd、"rexecd"和 "rshd),则不会执行身份验证。

方法名称 "compat、"files和 "NIS由安全库提供。 其他方法可在文件 "/usr/lib/security/methods.cfg中定义。

使用以下语法指定 "SYSTEM的值:

"SYSTEM"       ::= EXPRESSION
EXPRESSION     ::= PRIMITIVE  |
                    "("EXPRESSION")"  |
                     EXPRESSION OPERATOR EXPRESSION
PRIMITIVE      ::= METHOD  |
                    METHOD "["RESULT"]"
RESULT         ::= "SUCCESS" | "FAILURE" | "NOTFOUND" |
                   "UNAVAIL"  | "*"
OPERATOR       ::= "AND" | "OR"
METHOD         ::= "compat" | "files" | "NONE" |
                   [a-z,A-Z,0-9]*

语法示例如下:

SYSTEM = "DCE OR DCE[UNAVAIL] AND 
compat"
tpath 指示用户的可信路径状态。 以下是可能的值:
always
用户只能执行受信任的进程。 The always value of the tpath attribute implies that the user's initial program is in the trusted shell or some other trusted process.
notsh
用户不能调用可信路径上的可信 shell。 如果用户在登录后输入安全警告密钥 (SAK),那么登录会话结束。
nosak
对用户运行的所有进程禁用安全警告密钥 (SAK)。 如果用户传输可能包含 SAK 序列的二进制数据,请使用此值。 默认值为 "nosak
on
用户具有正常的可信的路径特征,并且可以使用安全警告密钥 (SAK) 来调用可信路径(输入可信 shell)。
ttys 列出可以访问名称参数指定账户的终端。 Value 参数是完整路径名的逗号分隔的列表,或指示所有终端的值 ALLRSHREXEC 的值也可用作终端名称。 终端名称前的 "!(感叹号)表示排除该终端。 如果不指定此属性,那么所有终端可以访问用户帐户。 如果参数不是 "ALL,则必须指定 "/dev/pts才能进行网络登录。
umask 确定文件许可权。 该值与创建进程的权限一起,决定了文件创建时的权限。 缺省值为 022。

更改用户文件

通过为此定义的命令和子程序访问该文件。 您可以使用以下命令更改 "user文件:

  • chuser 命令
  • lsuser 命令
  • mkuser 命令
  • rmuser 命令

mkuser命令在 "/etc/security/user文件中为每个新用户创建一个条目,并用 "/usr/lib/security/mkuser.default文件中定义的属性初始化其属性。 要更改属性值,请使用 "chuser命令。 要显示属性及其值,请使用 "lsuser命令。 要除去一个用户,请使用 rmuser 命令。

要编写影响 "/etc/security/user文件中属性的程序,请使用相关信息部分列出的子程序。

安全性

访问控制

user文件必须只授予 root 用户和安全组的成员读 (r) 访问权限。 对其他用户和组的访问权取决于系统的安全策略。 只有 root 用户才有写 (w) 权限。

审计事件

表 2. 审计事件
事件 信息
S_USER_WRITE 文件名

示例

  1. 对于用户 "dhs,一个典型的说明如下:
    dhs:
        login = true
        rlogin = false
        ttys = /dev/console
        sugroups = security,!staff
        expires = 0531010090
        tpath = on
        admin = true
        auth1 = SYSTEM,METH2;dhs
  2. 要允许除 "/dev/tty0外的所有 ttys 访问用户账户,请修改 ttys 条目,使其读作以下条目:
    ttys = !/dev/tty0,ALL

文件

表 3. 文件
描述
/etc/group 包含组的基本属性。
/etc/passwd 包含基本用户属性。
/etc/security/audit/config 包含有关审计系统配置的信息。
/etc/security/environ 包含用户的环境属性。
/etc/security/group 包含组的扩展属性。
/etc/security/limits 包含用户进程资源限制。
/etc/security/login.cfg 包含用户登录和身份验证的配置信息。
/etc/security/passwd 包含密码信息。
/usr/lib/security/mkuser.default 包含缺省用户配置。
/etc/security/user 包含扩展的用户属性。
/etc/security/lastlog 包含上次登录信息。