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

第 4 章 控制对设备的访问(任务)

本章介绍了保护设备的逐步说明,并包含一个参考部分。以下是本章中的信息列表:

有关设备保护的概述信息,请参见控制对设备的访问

配置设备(任务列表)

以下任务列表介绍了管理设备访问的任务。

任务 

参考 

管理设备策略 

配置设备策略(任务列表)

管理设备分配 

管理设备分配(任务列表)

使用设备分配 

分配设备(任务列表)

配置设备策略(任务列表)

以下任务列表介绍了与设备策略相关的设备配置过程。

任务 

说明 

参考 

查看系统上设备的设备策略 

列出设备及其设备策略。 

如何查看设备策略

要求使用设备的权限 

使用权限保护设备。 

如何更改现有设备上的设备策略

删除设备的权限要求 

删除或减少访问设备所需的权限。 

示例 4–3

审计设备策略中的更改 

在审计跟踪中记录设备策略的更改。 

如何审计设备策略中的更改

访问 /dev/arp

获取 Solaris IP MIB-II 信息。 

如何从 /dev/* 设备检索 IP MIB-II 信息

配置设备策略

设备策略会限制或防止对作为系统整体部分的设备进行访问。策略在内核中实施。

Procedure如何查看设备策略

    显示系统上所有设备的设备策略。


    % getdevpolicy | more
    
    DEFAULT
    
            read_priv_set=none
    
            write_priv_set=none
    
    ip:*
    
            read_priv_set=net_rawaccess
    
            write_priv_set=net_rawaccess
    
    …

示例 4–1 查看特定设备的设备策略

此示例显示了三个设备的设备策略。


% getdevpolicy /dev/allkmem /dev/ipsecesp /dev/hme

/dev/allkmem

        read_priv_set=all

        write_priv_set=all

/dev/ipsecesp

        read_priv_set=sys_net_config

        write_priv_set=sys_net_config

/dev/hme

        read_priv_set=net_rawaccess

        write_priv_set=net_rawaccess

Procedure如何更改现有设备上的设备策略

  1. 承担拥有设备安全权限配置文件的角色或成为超级用户。

    主管理员角色拥有设备安全权限配置文件。还可以将设备安全权限配置文件指定给所创建的角色。有关如何创建角色并将其指定给用户的信息,请参见示例 9–3

  2. 向设备中添加策略。


    # update_drv -a -p policy device-driver
    
    -a

    指定 device-driverpolicy

    -p policy

    device-driver 的设备策略。设备策略指定两组权限。一组用于读取设备,另一组用于写入设备。

    device-driver

    设备驱动程序。

    有关更多信息,请参见 update_drv(1M) 手册页。


示例 4–2 向现有设备中添加策略

以下示例向 ipnat 设备中添加设备策略。


# getdevpolicy /dev/ipnat

/dev/ipnat

        read_priv_set=none

        write_priv_set=none

# update_drv -a \

-p 'read_priv_set=net_rawaccess write_priv_set=net_rawaccess' ipnat

# getdevpolicy /dev/ipnat

/dev/ipnat

        read_priv_set=net_rawaccess

        write_priv_set=net_rawaccess


示例 4–3 删除设备的策略

以下示例从 ipnat 设备的设备策略中删除读取的一组权限。


# getdevpolicy /dev/ipnat

/dev/ipnat

        read_priv_set=net_rawaccess

        write_priv_set=net_rawaccess

# update_drv -a -p write_priv_set=net_rawaccess ipnat

# getdevpolicy /dev/ipnat

/dev/ipnat

        read_priv_set=none

        write_priv_set=net_rawaccess

Procedure如何审计设备策略中的更改

缺省情况下,as 审计类包括 AUE_MODDEVPLCY 审计事件。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 预选包括 AUE_MODDEVPLCY 审计事件的审计类。

    as 类添加到 audit_control 文件的 flags 行中。此文件的显示将与以下内容类似:


    # audit_control file
    
    dir:/var/audit
    
    flags:lo,as
    
    minfree:20
    
    naflags:lo

    有关详细说明,请参见如何修改 audit_control 文件

Procedure如何从 /dev/* 设备检索 IP MIB-II 信息

检索 Solaris IP MIB-II 信息的应用程序应该打开 /dev/arp,而不是 /dev/ip

  1. 确定 /dev/ip /dev/arp 上的设备策略。


    % getdevpolicy /dev/ip /dev/arp
    
    /dev/ip
    
            read_priv_set=net_rawaccess
    
            write_priv_set=net_rawaccess
    
    /dev/arp
    
            read_priv_set=none
    
            write_priv_set=none

    请注意,读写 /dev/ip 需要具有 net_rawaccess 权限,而 /dev/arp 不需要权限。

  2. 打开 /dev/arp 并推送 tcpudp 模块。

    此方法不需要权限,与打开 /dev/ip 并推送 arptcpudp 模块等效。由于现在打开 /dev/ip 需要权限,因此首选使用 /dev/arp 方法。

管理设备分配(任务列表)

以下任务列表介绍了启用和配置设备分配的过程。缺省情况下不会启用设备分配。启用设备分配之后,请参见分配设备(任务列表)

任务 

说明 

参考 

使设备可分配 

可以一次将一个设备分配给一个用户。 

如何使设备可分配

授权用户分配设备 

将设备分配授权指定给用户。 

如何授权用户来分配设备

查看系统上的可分配设备 

列出可分配的设备及其状态。 

如何查看有关设备的分配信息

强制分配设备 

将设备分配给有即时需要的用户 

强制分配设备

强制解除设备分配 

解除当前分配给某用户设备的分配 

强制解除设备分配

更改设备的分配属性 

更改分配设备的要求 

如何更改可以分配的设备

创建设备清理脚本 

清除物理设备中的数据。 

编写新的设备清理脚本

禁用设备分配 

删除所有设备中的分配限制。 

如何禁用审计

审计设备分配 

在审计跟踪中记录设备分配 

如何审计设备分配

管理设备分配

设备分配会限制或防止对外围设备进行访问。限制在用户分配时实施。缺省情况下,用户必须具有授权才能访问可分配设备。

Procedure如何使设备可分配

如果已经运行 bsmconv 命令启用了审计,则已经在系统上启用了设备分配。有关更多信息,请参见 bsmconv(1M) 手册页。

  1. 承担拥有审计控制权限配置文件的角色或成为超级用户。

    主管理员角色拥有审计控制权限配置文件。还可以将审计控制权限配置文件指定给所创建的角色。有关如何创建角色并将其指定给用户的信息,请参见示例 9–3

  2. 启用设备分配。


    # bsmconv
    
    This script is used to enable the Basic Security Module (BSM).
    
    Shall we continue with the conversion now? [y/n] y
    
    bsmconv: INFO: checking startup file.
    
    bsmconv: INFO: move aside /etc/rc3.d/S81volmgt.
    
    bsmconv: INFO: turning on audit module.
    
    bsmconv: INFO: initializing device allocation files.
    
    
    
    The Basic Security Module is ready.
    
    If there were any errors, please fix them now.
    
    Configure BSM by editing files located in /etc/security.
    
    Reboot this system now to come up with BSM enabled.

    注 –

    此命令禁用 Volume Management 守护进程 (/etc/rc3.d/S81volmgt)。


Procedure如何授权用户来分配设备

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建包含适当授权和命令的权限配置文件。

    通常,可以创建包括 solaris.device.allocate 授权的权限配置文件。请按照如何创建或更改权限配置文件中的说明执行。授予权限配置文件适当属性,例如:

    • 权限配置文件名称: Device Allocation

    • 授予的授权: solaris.device.allocate

    • 带有安全属性的命令:带有 sys_mount 权限的 mount 和带有 sys_mount 权限的 umount

  3. 创建权限配置文件的角色。

    请按照如何使用 GUI 创建和指定角色中的说明执行。使用以下角色属性作为指南:

    • 角色名: devicealloc

    • 角色全名: Device Allocator

    • 角色说明: Allocates and mounts allocated devices

    • 权限配置文件: Device Allocation

      此权限配置文件必须在包括于角色中的配置文件列表的顶部。

  4. 将此角色指定给允许分配设备的每个用户。

  5. 为用户讲授如何使用设备分配。

    有关分配可移除介质的示例,请参见如何分配设备

    由于 Volume Management 守护进程 (vold) 未运行,因此不会自动挂载可移除介质。有关挂载已分配设备的示例,请参见如何挂载已分配的设备

Procedure如何查看有关设备的分配信息

开始之前

必须启用设备分配,此过程才会成功。有关如何启用设备分配的信息,请参见如何使设备可分配

  1. 承担拥有设备安全权限配置文件的角色或成为超级用户。

    主管理员角色拥有设备安全权限配置文件。还可以将设备安全权限配置文件指定给所创建的角色。有关如何创建角色并将其指定给用户的信息,请参见示例 9–3

  2. 显示有关系统上可分配设备的信息。


    # list_devices device-name
    

    其中,device-name 是以下各项之一:

    • audio[n]-麦克风和扬声器。

    • fd[n]-软盘驱动器。

    • sr[n]-CD-ROM 驱动器。

    • st[n]-磁带机。

故障排除

如果 list_devices 命令返回一条类似于以下内容的错误消息,则表明未启用设备分配,或者您不具有足够权限来检索此信息。

list_devices: No device maps file entry for specified device.

为使此命令成功执行,请启用设备分配并承担具有 solaris.device.revoke 授权的角色。

Procedure强制分配设备

强制分配应在某个用户忘记解除设备分配时使用,也可以在用户对设备有即时需要时使用。

开始之前

此用户或角色必须具有 solaris.device.revoke 授权。

  1. 确定角色中是否具有适当授权。


    $ auths
    
    solaris.device.allocate solaris.device.revoke
  2. 将设备强制分配给需要此设备的用户。

    此示例将磁带机强制分配给用户 jdoe


    $ allocate -U jdoe
    

Procedure强制解除设备分配

在进程终止或用户注销时,不会自动解除对用户的设备分配。用户忘记解除设备分配时,应使用强制解除分配。

开始之前

此用户或角色必须具有 solaris.device.revoke 授权。

  1. 确定角色中是否具有适当授权。


    $ auths
    
    solaris.device.allocate solaris.device.revoke
  2. 强制解除设备分配。

    此示例强制解除打印机分配。现在,其他用户可以分配此打印机。


    $ deallocate -f /dev/lp/printer-1
    

Procedure如何更改可以分配的设备

  1. 承担拥有设备安全权限配置文件的角色或成为超级用户。

    主管理员角色拥有设备安全权限配置文件。还可以将设备安全权限配置文件指定给所创建的角色。有关如何创建角色并将其指定给用户的信息,请参见示例 9–3

  2. 指定是否需要授权,或者指定 solaris.device.allocate 授权。

    更改 device_allocate 文件中设备项的第五个字段。


    audio;audio;reserved;reserved;solaris.device.allocate;/etc/security/lib/audio_clean
    
    fd0;fd;reserved;reserved;solaris.device.allocate;/etc/security/lib/fd_clean
    
    sr0;sr;reserved;reserved;solaris.device.allocate;/etc/security/lib/sr_clean

    其中,solaris.device.allocate 指示用户必须具有 solaris.device.allocate 授权才能使用此设备。


示例 4–4 允许任何用户分配设备

在以下示例中,系统上的任何用户都可以分配所有设备。device_allocate 文件中每个设备项的第五个字段都更改为一个 at 符号 (@)。


$ whoami

devicesec

$ vi /etc/security/device_allocate

audio;audio;reserved;reserved;@;/etc/security/lib/audio_clean

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

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

…


示例 4–5 防止使用某些外围设备

在以下示例中,不能使用音频设备。device_allocate 文件中音频设备项的第五个字段更改为一个星号 (*)。


$ whoami

devicesec

$ vi /etc/security/device_allocate

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

fd0;fd;reserved;reserved;solaris device.allocate;/etc/security/lib/fd_clean

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

…


示例 4–6 防止使用所有外围设备

在以下示例中,不能使用外围设备。device_allocate 文件中每个设备项的第五个字段都更改为一个星号 (*)。


$ whoami

devicesec

$ vi /etc/security/device_allocate

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

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

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

…

Procedure如何审计设备分配

缺省情况下,设备分配命令位于 other 审计类中。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 预选 ot 类进行审计。

    ot 类添加到 audit_control 文件的 flags 行中。此文件的显示与以下信息类似:


    # audit_control file
    
    dir:/var/audit
    
    flags:lo,ot
    
    minfree:20
    
    naflags:lo

    有关详细说明,请参见如何修改 audit_control 文件

分配设备(任务列表)

以下任务列表介绍了向用户说明如何分配设备的过程。

任务 

说明 

参考 

分配设备 

使某用户可以用某设备,同时防止任何其他用户使用此设备。 

如何分配设备

挂载已分配的设备 

使用户可以查看需要挂载的设备,例如 CD-ROM 或软盘。 

如何挂载已分配的设备

解除设备分配 

使其他用户可以使用可分配设备。 

如何解除设备分配

分配设备

设备分配使设备每次只能被一个用户使用。必须挂载需要挂载点的设备。

Procedure如何分配设备

开始之前

必须启用设备分配,如如何使设备可分配中所述。如果需要授权,则用户必须具有此授权。

  1. 分配设备。

    根据设备名称指定设备。


    % allocate device-name
    
  2. 检验是否已分配此设备。

    运行相同命令。


    % allocate device-name
    
    allocate. Device already allocated.

示例 4–7 分配麦克风

在此示例中,用户 jdoe 分配麦克风 audio


% whoami

jdoe

% allocate audio


示例 4–8 分配打印机

在此示例中,某用户分配打印机。该用户解除打印机分配或打印机被强制分配给其他用户之前,任何其他用户都不能打印到 printer-1


% allocate /dev/lp/printer-1

有关强制解除分配的示例,请参见强制解除设备分配



示例 4–9 分配磁带机

在此示例中,用户 jdoe 分配磁带机 st0


% whoami

jdoe

% allocate st0

故障排除

如果 allocate 命令不能分配设备,则会在控制台窗口显示一条错误消息。有关分配错误消息的列表,请参见 allocate(1) 手册页。

Procedure如何挂载已分配的设备

开始之前

用户或角色已分配了此设备。要挂载设备,用户或角色必须具有挂载此设备所需的权限。有关如何提供所需权限的信息,请参见如何授权用户来分配设备

  1. 承担可以分配和挂载设备的角色。


    % su role-name
    
    Password: <键入 role-name 的口令>
    
    $
  2. 在角色起始目录中创建并保护挂载点。

    只需在首次需要挂载点的时候执行此步骤。


    $ mkdir mount-point ; chmod 700 mount-point
    
  3. 列出可分配的设备。


    $ list_devices -l
    
    List of allocatable devices
    
  4. 分配设备。

    根据设备名称指定设备。


    $ allocate device-name
    
  5. 挂载设备。


    $ mount -o ro -F filesystem-type device-path mount-point
    

    其中,

    -o ro

    指示将此设备挂载为只读。使用 -o rw 指示应该可以写入此设备。

    -F filesystem-type

    指示设备的文件系统格式。通常,使用 HSFS 文件系统格式化 CD-ROM。而软盘通常使用 PCFS 文件系统进行格式化。

    device-path

    指示设备的路径。list_devices -l 命令的输出包括 device-path

    mount-point

    指示在步骤 2 中创建的挂载点。


示例 4–10 分配软盘驱动器

在此示例中,用户承担可以分配和挂载软盘驱动器 fd0 的角色。软盘已使用 PCFS 文件系统进行了格式化。


% roles

devicealloc

% su devicealloc

Password: <键入 devicealloc 的口令>

$ mkdir /home/devicealloc/mymnt

$ chmod 700 /home/devicealloc/mymnt

$ list_devices -l

...

device: fd0 type: fd files: /dev/diskette /dev/rdiskette /dev/fd0a

...

$ allocate fd0

$ mount -o ro -F pcfs /dev/diskette /home/devicealloc/mymnt

$ ls /home/devicealloc/mymnt

List of the contents of diskette


示例 4–11 分配 CD-ROM 驱动器

在此示例中,用户承担可以分配和挂载 CD-ROM 驱动器 sr0 的角色。此驱动器按照 HSFS 文件系统进行格式化。


% roles

devicealloc

% su devicealloc

Password: <键入 devicealloc 的口令>

$ mkdir /home/devicealloc/mymnt

$ chmod 700 /home/devicealloc/mymnt

$ list_devices -l

...

device: sr0 type: sr files: /dev/sr0 /dev/rsr0 /dev/dsk/c0t2d0s0 ...

...

$ allocate sr0

$ mount -o ro -F hsfs /dev/sr0 /home/devicealloc/mymnt

$ cd /home/devicealloc/mymnt ; ls

List of the contents of CD-ROM

故障排除

如果 mount 命令不能挂载设备,则会显示一条错误消息: mount:insufficient privileges。检查以下各项:

如果仍然不能挂载已分配的设备,请与管理员联系。

Procedure如何解除设备分配

解除分配使其他用户可以分配和使用此设备。

开始之前

必须已经分配此设备。

  1. 如果此设备已挂载,请将其卸载。


    $ cd $HOME
    
    $ umount mount-point
    
  2. 解除设备分配。


    $ deallocate device-name
    

示例 4–12 解除麦克风分配

在此示例中,用户 jdoe解除麦克风 audio 的分配。


% whoami

jdoe

% deallocate audio


示例 4–13 解除 CD-ROM 驱动器的分配

在此示例中,设备分配器角色解除 CD-ROM 驱动器的分配。消息列显后,会弹出 CD-ROM。


$ whoami

devicealloc

$ cd /home/devicealloc

$ umount /home/devicealloc/mymnt

$ ls /home/devicealloc/mymnt

$ 

$ deallocate sr0

/dev/sr0:      326o

/dev/rsr0:     326o

…

sr_clean: Media in sr0 is ready.  Please, label and store safely.

设备保护(参考)

设备策略保护 Solaris OS 中的设备。设备分配可以保护外围设备。设备策略由内核实施。可以选择启用设备分配,并在用户级别实施。

设备策略命令

设备管理命令管理本地文件的设备策略。设备策略可以包括权限要求。只有超级用户或具有等效功能的角色才能管理设备。

下表列出了设备管理命令。

表 4–1 设备管理命令

命令 

目的 

手册页 

devfsadm

在运行的系统上管理设备和设备驱动程序。还装入设备策略。 

使用 devfsadm 命令,可以清除指向磁盘、磁带、端口、音频设备和伪设备的不稳定 /dev 链接。还可以重新配置已命名驱动程序的设备。

devfsadm(1M)

getdevpolicy

显示与一个或多个设备关联的策略。任何用户都可以运行此命令。 

getdevpolicy(1M)

add_drv

将新设备驱动程序添加到正在运行的系统。包含将设备策略添加到此新设备的选项。通常,正在安装设备驱动程序时会在脚本中调用此命令。 

add_drv(1M)

update_drv

更新现有设备驱动程序的属性。包含为此设备更新设备策略的选项。通常,正在安装设备驱动程序时会在脚本中调用此命令。 

update_drv(1M)

rem_drv

删除设备或设备驱动程序。 

rem_drv(1M)

设备分配

设备分配可以保护站点免受数据丢失、计算机病毒以及其他安全问题的破坏。与设备策略不同,设备分配是可选的。只有在 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

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