Solaris Resource Manager 1.3 系统管理指南

帐户管理

当 Solaris Resource Manager 帐户管理 PAM 模块获得控制时:

  1. 它就确定是否已安装和启用 Solaris Resource Manager;如果没有,则告诉 PAM 系统忽略该模块。

  2. 它就确定是否用户拥有一个 lnode,如果没有,则调用一个管理员可配置的 "no lnode" 脚本。

  3. 它就确定是否用户拥有使用所请求的服务和设备的许可。

  4. 它就确定是否用户业已超过警告限制;如果是,就拒绝其登录。

  5. 它就调用一个管理员可配置的 "every login" 脚本。

如果上述步骤中有任何一个失败,则剩余的步骤不再执行,且 Solaris Resource Manager 帐户管理 PAM 模块拒绝使用服务。在可能的情况下,会通过服务向用户传递一个解释性的消息。

脚本

缺省的“丢失的 lnode”脚本将为用户创建一个 lnode,并发送电子邮件通知系统管理员已经这样做了。缺省的脚本是 /etc/srm/nolnode,但它可通过编辑文件 /etc/pam.conf 并更改 Solaris Resource Manager 帐户管理模块行上的 nolnode 选项的数值而得到更改。“每次登录”脚本一般不配置。但是,它可通过将 [[everylogin=pathname]] 选项添加到 /etc/pam.conf 中的任何 Solaris Resource Manager 帐户管理模块上而得到配置。脚本是作为 root 用户被调用的。标准输入、输出和错误均被关闭。如果某个脚本以非零状态退出,则登录就被拒绝。所有信息均被作为环境变量被传递,且直接从由服务传递到 PAM 的信息中得到。

USER

提供给程序的登录名称。已通过在口令映射中检索加以鉴别;如果不存在,帐户管理模块则向 PAM 返回一个错误代码。

UID

正在进行鉴别的用户的 UID。对于更改 UID 的服务(如 su),则是调用服务的用户的 UID;对于设置 UID 的服务(如 login),则是目标 UID(例如,USER 的 UID)。

RHOST

对于跨网络的访问企图,其中所包含的是作出该企图的主机的名称。否则其值取决于实施过程。

SERVICE

访问服务的名称,例如,rshloginftp

TTY

服务被调用时所在的 TTY 的名称。(严格来讲)某些没有控制终端的服务(如 ftp)将使用进程信息填充变量(例如,ftp12345,其中 12345ftpd 的进程识别符 (PID);其它程序则保持其为空或者用服务名称代替。

DEBUG

如果 debug 已在 pam.conf 文件中规定,则 DEBUG 被设置为真;否则,它就被设置为假。不再设置其它环境变量,所以任何脚本都必须根据需要设置自己的 PATH 变量。

缺省的 "no lnode" 脚本在缺省的调度组创建 lnode(如果一个此类的用户在口令映射中存在的话,则为 other;否则,为 root),并向系统管理员发出邮件,提醒其将新的 lnode 移到调度分层结构中的适当的位置。系统管理员寄出一份备忘录, 提醒他把新的 lnode 移动到调度层级结构中的正确位置。如要了解脚本示例,请参阅 缺省 'no lnode' 脚本

PAM 与设备组的交互

Solaris Resource Manager PAM 模块在设备分层结构中检索终端和服务名称;如果超过限制或者某一设备标志值为 set,就向其调用者返回一个“拒绝许可”信息。

所检查的设备类别为 terminal,指的是终端名称,services 指的是所请求的服务的种类。例如, rlogin 可能会尝试使用网络设备组中的某个文件,因而为该用户所测试的标志为如下所示(假设所有的标志均设置为 group),这些标志的检查顺序为:

只有其所有的值均为 set 时,才许可访问。另外,还要为相对应的类别检查限制(terminalservices)。