labelsession 子程序

用途

通过对照系统标签验证用户安全标签,确定用户对系统的访问权限。

可信AIX®库 ( libmls.a)

语法

#include <mls/mls.h>

int labelsession (Name, Mode, TTY, EffSL, EffTL, Msg [, Flag])
char *Name;
intMode;
char *TTY;
char *EffSL;
char *EffTL;
char **Msg;
int Flag;

描述

labelsession子程序根据用户的敏感性和完整性许可,确定是否允许Name参数指定的用户访问系统。 模式参数给出账户的使用模式,TTY参数定义用于访问的终端。 EffSLEffTL参数分别指定会话的有效灵敏度标签和有效完整性标签。 Msg参数返回一条信息,解释子程序失败的原因。

在下列情况下,labelsession子程序会失败:
  • 模式参数不是 S_SU,且用户的用户 ID 小于 128。 用户 ID (uid) 小于 128 的用户只能使用su命令登录。
  • 敏感度标签或完整性标签,或两个标签都没有正确支配。
  • 指定的有效 SL 不在用户权限范围内,且用户没有aix.mls.label.outsideaccred权限
  • 用户的有效 SL 不在 TTY 的标签范围内。
  • 指定的有效 TL 不在用户的间隙范围内。
  • 如果 TTY 已设置 TL,则指定的有效 TL 不等于 TTY 的 TL。
  • S_SU 未指定Flag参数,且当前用户的标签不主导新用户的标签。
限制:此子程序仅适用于可信AIX系统。

参数

描述
NAME 指定用户登录名。
模式 指定要使用的模式。 模式参数包含login.h文件中定义的以下有效值之一:
S_LOGIN
本地登录
S_RLOGIN
使用rlogindtelnetd命令进行远程登录
S_SU
使用su命令登录
S_FTP
基于 FTP 的登录
TTY 指定发起活动的终端。 如果该参数为空指针或空字符串,则不进行 TTY 检查。
EffSL 指定会话所需的有效 SL。
EffTL 指定会话所需的有效 TL。
信息 向用户界面返回一条信息,解释子程序失败的原因。 返回值要么是指向内存分配存储空间内有效字符串的指针,要么是空值。
旗帜 Flag参数设置为 1 时,当前用户的标签不必与新用户的标签一致,即可允许访问。 该参数仅对 S_SU 模式有效。 对于所有其他会话类型,该参数将被忽略。

安全性

访问控制:调用进程必须能够访问用户数据库中的账户信息和端口数据库中的端口信息。 调用进程还必须拥有该子程序所调用的子程序所要求的权限。

访问的文件

方式 文件
r /etc/security/enc/LabelEncodings
r /etc/security/user

返回值

如果会话标签对指定用途有效,则labelsession子程序会返回 0 值。 否则,子程序返回值为-1,并设置errno全局值,Msg参数返回错误信息。

错误代码

如果子程序失败,则返回以下错误代码之一:

描述
EINVAL 标签编码文件错误或标签优势错误
EINVAL 指定的有效 SL 在系统中无效
ENOATTR 用户的审核属性不存在
ENOMEM 无法分配存储返回值的内存
EPERM 不允许完成操作