系统管理指南:安全性服务

设备分配

设备分配可以保护站点免受数据丢失、计算机病毒以及其他安全问题的破坏。与设备策略不同,设备分配是可选的。只有在 bsmconv 脚本运行之后才可分配设备。。设备分配使用授权限制对可分配设备的访问。

设备分配的组成

设备分配机制的组成如下所示:

这些命令和脚本使用以下本地文件实现设备分配:


注 –

Solaris OS 的将来发行版可能不支持 /etc/security/dev 目录。


设备分配命令

与大写选项一起使用时,allocatedeallocate list_devices 命令是管理命令。否则,这些命令是用户命令。下表列出了设备分配命令。

表 4–2 设备分配命令

命令 

目的 

手册页 

bsmconv

创建数据库以处理设备分配。还启用审计服务。您必须是超级用户或承担主管理员角色。 

bsmconv(1M)

dminfo

根据设备类型、设备名称以及全路径名搜索可分配设备。 

dminfo(1M)

list_devices

列出可分配设备的状态。 

列出与 device_maps 文件中列出的任何设备关联的所有设备特定文件。

list_devices(1)

list_devices -U

列出可分配或分配给指定用户 ID 的设备。使用此选项可以检查可分配或分配给其他用户的设备。必须具有 solaris.device.revoke 授权。

 

allocate

保留一个可分配设备以供一个用户使用。 

缺省情况下,用户必须具有 solaris.device.allocate 授权才能分配设备。可以修改 device_allocate 文件,使其不需要用户授权。然后,系统上的任何用户都可以请求分配设备以供使用。

allocate(1)

deallocate

删除设备的分配保留。 

deallocate(1)

分配命令授权

缺省情况下,用户必须具有 solaris.device.allocate 授权才能保留可分配设备。有关如何创建包括 solaris.device.allocate 授权的权限配置文件的信息,请参见如何授权用户来分配设备

管理员必须具有 solaris.device.revoke 授权才能更改任何设备的分配状态。例如,allocatelist_devices 命令的 -U 选项,以及 deallocate 命令的 -F 选项需要 solaris.device.revoke 授权。

有关更多信息,请参见要求授权的命令

分配错误状态

deallocate 命令解除分配失败,或 allocate 命令分配失败时,设备将被置于分配错误状态。可分配设备处于分配错误状态时,必须强制解除对此设备的分配。只有超级用户或者具有设备管理权限配置文件或设备安全权限配置文件的角色才能处理分配错误状态。

deallocate 命令和 -F 选项一起使用可强制解除分配。或者,可以使用 allocate -U 将设备指定给用户。设备分配后,便可查明出现的任何错误消息。更正设备的所有问题后,可强制解除其分配。

device_maps 文件

设置设备分配时会创建设备映射。启用审计服务后,bsmconv 命令会创建缺省 /etc/security/device_maps 文件。可以为站点自定义此初始 device_maps 文件。device_maps 文件包括与每个可分配设备关联的设备名称、设备类型和设备特定文件。

device_maps 文件定义每个设备的设备特定文件映射,这在许多情况下并不是直观的。使用此文件,程序可以查看设备特定文件和设备之间的映射关系。例如,可以使用 dminfo 命令,在设置可分配设备时检索要指定的设备名称、设备类型和设备特定文件。dminfo 命令使用 device_maps 文件来报告此信息。

每个设备由仅占一行的项表示,该项格式如下:


device-name:device-type:device-list

示例 4–14 device_maps 项样例

以下是 device_maps 文件中软盘驱动器 fd0 的项的示例:


fd0:\

        fd:\

        /dev/diskette /dev/rdiskette /dev/fd0a /dev/rfd0a \

/dev/fd0b /dev/rfd0b /dev/fd0c /dev/fd0 /dev/rfd0c /dev/rfd0:\

device_maps 文件中的行可以用反斜杠 (\) 结束,以在下一行继续项。也可以包括注释。井号 (#) 注释前面未紧跟反斜杠的下一个新行之前的所有后续文本。所有字段中都允许前导空格和后缀空格。字段定义如下:

device-name

指定此设备的名称。有关当前设备名称的列表,请参见如何查看有关设备的分配信息

device-type

指定通用设备类型。通用名称是设备类的名称,例如 stfdaudiodevice-type 字段在逻辑上将相关设备分组。

device-list

列出与物理设备关联的设备特定文件。device-list 必须包含所有允许访问特定设备的特定文件。如果此列表不完整,则恶意用户仍可以获取或修改专用信息。device-list 字段的有效项反映位于 /dev 目录中的设备文件。

device_allocate 文件

启用审计服务后,bsmconv 命令会创建初始 /etc/security/device_allocate 文件。此初始 device_allocate 文件可以用作起始点。可以修改 device_allocate 文件,以将设备从可分配更改为不可分配,或者添加新设备。以下是一个 device_allocate 文件样例。


st0;st;;;;/etc/security/lib/st_clean

fd0;fd;;;;/etc/security/lib/fd_clean

sr0;sr;;;;/etc/security/lib/sr_clean

audio;audio;;;*;/etc/security/lib/audio_clean

device_allocate 文件中的项并不表示此设备是可分配的,除非此项专门声明此设备是可分配的。请注意 device_allocate 文件样例中音频设备项第五个字段中的星号 (*)。第五个字段中的星号向系统指示此设备不是可分配的。因此,不能使用此设备。如果此字段中存在其他值或没有值,则指示可以使用此设备。

device_allocate 文件中,每个设备由仅占一行的项表示,该项的格式如下:


device-name;device-type;reserved;reserved;auths;device-exec

device_allocate 文件中的行可以用反斜杠 (\) 结束,以在下一行继续项。也可以包括注释。井号 (#) 注释前面未紧跟反斜杠的下一个新行之前的所有后续文本。所有字段都允许前导空格和后缀空格。字段定义如下:

device-name

指定此设备的名称。有关当前设备名称的列表,请参见如何查看有关设备的分配信息

device-type

指定通用设备类型。通用名称是设备类的名称,例如 stfdsrdevice-type 字段在逻辑上将相关设备分组。使设备可分配后,可 device_maps 文件的 device-type 字段中检索设备名称。

reserved

Sun 保留两个标记为 reserved 的字段以供将来使用。

auths

指定此设备是否可分配。此字段中的星号 (*) 指示此设备是不可分配的。授权字符串或空字段指示此设备是可分配的。例如,auths 字段中的字符串 solaris.device.allocate 指示需要 solaris.device.allocate 授权才能分配此设备。此文件中的 at 符号 (@) 指示任何用户都可以分配此设备。

device-exec

提供为特殊处理(例如分配进程期间的清除和对象重用保护)而调用的脚本的路径名称。每当 deallocate 命令对此设备执行操作时,都会运行 device-exec 脚本。

例如,sr0 设备的以下项指示具有 solaris.device.allocate 授权的用户可以分配 CD-ROM 驱动器:


sr0;sr;reserved;reserved;solaris.device.allocate;/etc/security/lib/sr_clean

可以决定接受缺省设备及其已定义特征。安装新设备后,可以修改这些项。任何需要在使用之前分配的设备都必须在该设备系统的 device_allocatedevice_maps 文件中定义。当前,将盒式磁带机、软盘驱动器、CD-ROM 驱动器和音频芯片视为可分配的。这些设备类型具有设备清理脚本。


注 –

XylogicsTM 磁带机或归档磁带机还使用为 SCSI 设备提供的 st_clean 脚本。需要为其他设备(如调制解调器、终端、图形输入板和其他可分配设备)创建自己的设备清理脚本。脚本必须满足此类型设备的对象重用要求。


设备清理脚本

设备分配满足称为对象重用的部分要求。设备清理脚本说明安全要求,即在重用之前从物理设备中清除所有可用数据。清除数据后,其他用户才可分配此设备。缺省情况下,盒式磁带机、软盘驱动器、CD-ROM 驱动器和音频设备需要设备清理脚本。Solaris OS 提供了这些脚本。本节介绍设备清理脚本的功能。

磁带的设备清理脚本

st_clean 设备清理脚本支持三种磁带设备:

st_clean 脚本使用 mt 命令的 rewoffl 选项来清除此设备。有关更多信息,请参见 mt(1) 手册页。如果此脚本在系统引导期间运行,则会查询此设备以确定它是否联机。如果设备联机,则此脚本确定设备中是否有介质。内含介质的 ¼ 英寸磁带设备会被置于分配错误状态。分配错误状态强制管理员手动清除此设备。

系统正常操作期间,在交互模式下执行 deallocate 命令时,将提示用户删除此介质。从设备中删除此介质之后才会进行解除分配。

软盘驱动器和 CD-ROM 驱动器的设备清理脚本

为软盘驱动器和 CD-ROM 驱动器提供以下设备清理脚本:

这些脚本使用 eject 命令从驱动器中删除介质。如果 eject 命令失败,则会将此设备置于分配错误状态。有关更多信息,请参见 eject(1) 手册页。

音频的设备清理脚本

使用 audio_clean 脚本清除音频设备。此脚本执行 AUDIO_GETINFO ioctl 系统调用来读取设备。然后,此脚本执行 AUDIO_SETINFO ioctl 系统调用将此设备的配置重置为缺省值。

编写新的设备清理脚本

如果将更多可分配设备添加到系统,则可能需要创建自己的设备清理脚本。deallocate 命令将参数传送到设备清理脚本中。在此显示的参数是包含设备名称的字符串。有关更多信息,请参见 device_allocate(4) 手册页。


clean-script -[I|i|f|S] device-name

设备清理脚本在成功时一定会返回 "0",而在失败时返回大于 "0" 的值。-I-f-S 选项确定脚本的运行模式:

-I

只有在系统引导期间才需要此选项。所有输出必须转到系统控制台。强制弹出介质失败或无法强制弹出介质必定会将此设备置于分配错误状态。

-i

-I 选项类似,但不显示输出。

-f

用于强制清除。此选项是交互的,并且假定用户可以响应提示。如果一部分清除操作失败,则带有此选项的脚本必须尝试完成清除。

-S

用于标准清除。此选项是交互的,并且假定用户可以响应提示。