JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:安全服务     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  病毒扫描服务(任务)

5.  控制对设备的访问(任务)

6.  使用基本审计报告工具(任务)

7.  控制对文件的访问(任务)

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

使用 RBAC(任务)

查看和使用 RBAC 缺省值(任务)

查看和使用 RBAC 缺省值(任务列表)

如何查看所有已定义的安全属性

如何查看指定的权限

如何承担角色

如何获取管理权限

为站点定制 RBAC(任务)

初次配置 RBAC(任务列表)

如何规划 RBAC 实现

如何创建角色

如何指定角色

如何审计角色

如何创建或更改权限配置文件

如何为传统应用程序添加 RBAC 属性

如何排除 RBAC 和特权指定故障

管理 RBAC(任务)

管理 RBAC(任务列表)

如何更改角色的口令

如何更改角色的安全属性

如何更改用户的 RBAC 属性

如何将用户限于桌面应用程序

如何将管理员限于显式指定的权限

如何让用户使用自己的口令承担角色

如何将 root 角色更改为用户

使用特权(任务)

确定您的特权(任务列表)

如何列出系统上的特权

如何确定已直接指定给您的特权

如何确定您可以运行的特权命令

管理特权(任务列表)

如何确定进程的特权

如何确定程序所需的特权

如何运行具有特权命令的 Shell 脚本

10.  Oracle Solaris 中的安全属性(参考)

第 4 部分加密服务

11.  加密框架(概述)

12.  加密框架(任务)

13.  密钥管理框架

第 5 部分验证服务和安全通信

14.  网络服务验证(任务)

15.  使用 PAM

16.  使用 SASL

17.  使用 安全 Shell(任务)

18.  安全 Shell(参考)

第 6 部分Kerberos 服务

19.  Kerberos 服务介绍

20.  规划 Kerberos 服务

21.  配置 Kerberos 服务(任务)

22.  Kerberos 错误消息和故障排除

23.  管理 Kerberos 主体和策略(任务)

24.  使用 Kerberos 应用程序(任务)

25.  Kerberos 服务(参考)

第 7 部分在 Oracle Solaris 中审计

26.  审计(概述)

27.  规划审计

28.  管理审计(任务)

29.  审计(参考)

词汇表

索引

管理 RBAC(任务)

在已配置并使用 RBAC 后,请使用以下过程维护并修改系统上的 RBAC。

管理 RBAC(任务列表)

以下任务列表列出了有关在初步实现基于角色的访问控制 (role-based access control, RBAC) 后维护 RBAC 的过程。

任务
说明
参考
更改角色口令。
授权的用户或角色更改另一个角色的口令。
修改角色的指定权限。
修改角色的安全属性。
修改用户的权限。
为一般用户添加安全属性,或删除这些安全属性。
修改权限配置文件中的用户权限。
指定权限配置文件中的安全属性,例如审计标志和缺省特权。
创建受限制的配置文件 shell。
防止用户或角色完全访问软件中的所有命令。
从系统中删除缺省权限。
创建一个系统供在特殊时候使用。
限制用户的特权。
限制用户的基本或限制特权集。
允许用户提供相应的用户口令,以承担角色。
修改用户的安全属性,以便该用户的口令能够使该用户通过角色的验证。此行为与 Linux 角色行为类似。
root 更改为用户。
在淘汰系统之前,将 root 角色更改为用户。

以上这些过程管理用户、角色以及权限配置文件的安全属性。有关基本的用户管理过程,请参阅《Oracle Solaris 管理:常见任务》中的第 2  章 "管理用户帐户和组(概述)"

如何更改角色的口令

开始之前

您必须是 root 角色。

示例 9-17 更改角色的口令

在以下示例中,root 角色将更改本地 devmgt 角色的口令。

# passwd -r files devmgt
New password: Type new password
Confirm password: Retype new password

在以下示例中,root 角色将更改 LDAP 目录服务中 devmgt 角色的口令。

# passwd -r ldap devmgt
New password: Type new password
Confirm password: Retype new password

在以下示例中,root 角色将更改文件和 LDAP 中 devmgt 角色的口令。

# passwd devmgt
New password: Type new password
Confirm password: Retype new password

如何更改角色的安全属性

开始之前

您必须分配有 User Security(用户安全)权限配置文件之后,您才能更改角色的安全属性(除了角色的口令和审计标志)。角色属性包括权限配置文件和授权。要指定审计标志或更改角色的口令,必须采用 root 角色。


注 - 要更改口令,请参见如何更改角色的口令


  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 使用 rolemod 命令。

    此命令可修改在本地命名服务或 LDAP 中定义的角色的属性。-A-P-R 选项的值可以通过 -++ 进行修改。- 表示从当前指定的值中减去该值。++ 表示将该值与当前指定的值相加。

    有关 rolemod 命令的更多信息,请参见以下内容:

    • 如果要简单了解,请参见如何创建角色中有关 roleadd 命令的介绍。

    • 有关此命令的所有参数,请参见 rolemod(1M) 手册页。

    • 有关 -K 选项的关键值列表,请参见 user_attr(4) 手册页。

    以下命令可以替换 LDAP 系统信息库中 devmgt 角色的指定权限配置文件。

    $ rolemod -P "Device Management,File Management" -S ldap devadmin

示例 9-18 更改本地角色的安全属性

在以下示例中,管理员将修改 prtmgt 角色以包括 VSCAN Management(VSCAN 管理)权限配置文件。

$ rolemod -c "Handles printers and virus scanning" \
-P "Printer Management,VSCAN Management,All" prtmgt

这些权限配置文件将添加到通过 policy.conf 文件授予的配置文件。

示例 9-19 将特权直接指定给角色

在以下示例中,安全管理员会向 systime 角色授予一个非常特定的特权,该特权可以影响系统时间。

$ rolemod -K priv=proc_clock_highres systime

priv 关键字的值始终都位于角色进程的特权列表中。

如何更改用户的 RBAC 属性

用户属性包括登录 shell、权限配置文件和角色。为用户提供管理权能的最安全方法是将角色指定给用户。有关讨论,请参见直接指定安全属性时的安全注意事项

开始之前

您必须分配有 User Security(用户安全)权限配置文件之后,您才能更改用户的安全属性(除了用户的口令和审计标志)。要指定审计标志或更改角色的口令,必须采用 root 角色。要更改其他用户属性,必须为您指定 User Management(用户管理)权限配置文件。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 使用 usermod 命令。

    该命令可以修改在本地命名服务或 LDAP 命名服务中定义的用户的属性。该命令的 RBAC 参数类似于 useradd 命令的参数,如 user_attr(4) 手册页和示例 9-23 中所述。

    在以下示例中,为 LDAP 用户指定了 devmgt 角色。该角色将替换所有之前的角色指定。devmgt 角色必须存在于 LDAP 命名服务中。

    $ usermod -R devmgt -S ldap jdoe-ldap

    在以下示例中,该角色将添加到所有之前的角色指定中。

    $ usermod -R +devmgt -S ldap jdoe-ldap

示例 9-20 将角色指定给本地用户。

在本示例中,用户 jdoe 现在可以承担 System Administrator(系统管理员)sysadmin 角色。

$ userattr roles jdoe
secdevice
$ usermod -R secdevice,sysadmin jdoe
$ userattr roles jdoe
secdevice,sysadmin

示例 9-21 从用户的限制特权集中删除特权

在以下示例中,防止所有源自 jdoe 初始登录的会话使用 sys_linkdir 特权。也就是说,即使在用户运行 su 命令之后,也不能生成指向目录的硬链接,并且也不能解除目录链接。

$ usermod -K limitpriv=all,!sys_linkdir jdoe
$ userattr limitpriv jdoe
all,!sys_linkdir

示例 9-22 创建可以管理 DHCP 的用户

在本示例中,安全管理员将在 LDAP 中创建一个用户。登录时,jdoe-dhcp 用户能够管理 DHCP。

# useradd -P "DHCP Management" -s /usr/bin/pfbash -S ldap jdoe-dhcp

由于已为用户指定了 pfbash 作为登录 shell,因此 DHCP Management(DHCP 管理)权限配置文件中的安全属性对用户缺省 shell 中的用户可用。

示例 9-23 将授权直接指定给用户

在本示例中,安全管理员将创建一个可以控制屏幕亮度的本地用户。

# useradd -c "Screened JDoe, local" -s /usr/bin/pfbash \
-A solaris.system.power.brightness jdoe-scr

该授权将添加到用户的现有授权指定中。

示例 9-24 将特权直接指定给用户

在本示例中,安全管理员会向 jdoe 用户授予一个非常特定的特权,该特权可以影响系统时间。

$ usermod -K defaultpriv=basic,proc_clock_highres jdoe

defaultpriv 关键字的值将替换现有的值。因此,对于要保留 basic 特权的用户,指定了值 basic。在缺省配置中,所有用户都拥有基本特权。

如何将用户限于桌面应用程序

仅可以将 Oracle Solaris 用户限于桌面访问。

开始之前

您必须是 root 角色。

  1. 为用户指定一个配置文件 shell,作为登录 shell。

    例如,可以将 pfbash shell 指定给用户。

    # usermod -s /usr/bin/pfbash username

    所有用户进程现在都受 RBAC 控制。

  2. 创建允许用户在 Oracle 桌面上运行基本 applet 的权限配置文件。

    以下命令可以创建权限配置文件。end 命令表明添加的命令不需要安全属性。要在 LDAP 系统信息库中创建权限配置文件,请使用 -S ldap 选项。

    # profiles -p "Desktop Applets"
    profiles:Desktop Applets> set desc="Can use basic desktop applications"
    profiles:Desktop Applets> add cmd=/usr/bin/nautilus;end
    profiles:Desktop Applets> add cmd=/usr/bin/dbus-launch;end
    profiles:Desktop Applets> add cmd=/usr/lib/dbus-daemon;end
    profiles:Desktop Applets> add cmd=/usr/lib/clock-applet;end
    profiles:Desktop Applets> add cmd=/usr/lib/gconfd-2;end
    profiles:Desktop Applets> add cmd=/usr/lib/gvfsd;end
    profiles:Desktop Applets> add cmd=/usr/lib/gvfsd-metadata;end
    profiles:Desktop Applets> add cmd=/usr/lib/gvfsd-trash;end
    profiles:Desktop Applets> add cmd=/usr/lib/gvfs-hal-volume-monitor;end
    profiles:Desktop Applets> add cmd=/usr/lib/gnome-pty-helper;end
    profiles:Desktop Applets> add cmd=/usr/lib/utmp_update;end
    profiles:Desktop Applets> add cmd=/usr/bin/sh;end
    profiles:Desktop Applets> add cmd=/usr/bin/bash;end
    profiles:Desktop Applets> add cmd=/usr/bin/csh;end
    profiles:Desktop Applets> add cmd=/usr/bin/ksh;end
    profiles:Desktop Applets> commit
    profiles:Desktop Applets> exit
  3. 验证权限配置文件中是否包含正确的项。

    查看各项是否出现错误,例如拼写、缺失或重复错误。

    # profiles -p "Desktop Applets" info
    Found profile in files repository.
    name=Desktop Applets
    desc=Can use basic desktop applications
    cmd=/usr/bin/nautilus
    cmd=/usr/bin/dbus-launch
    cmd=/usr/lib/dbus-daemon
    cmd=/usr/lib/clock-applet
    cmd=/usr/lib/gconfd-2
    cmd=/usr/lib/gvfsd
    cmd=/usr/lib/gvfsd-metadata
    cmd=/usr/lib/gvfsd-trash
    cmd=/usr/lib/gvfs-hal-volume-monitor
    cmd=/usr/lib/gnome-pty-helper
    cmd=/usr/lib/utmp_update
    cmd=/usr/bin/sh
    cmd=/usr/bin/bash
    cmd=/usr/bin/csh
    cmd=/usr/bin/ksh

    提示 - 您可以为一个应用程序或一类具有桌面图标的应用程序创建一个权限配置文件。然后,将 Desktop Applets(桌面 Applet)作为补充权限配置文件添加到该新的权限配置文件中。结合使用这些权限配置文件可允许用户使用适当的桌面应用程序。


  4. 将 Desktop Applets(桌面 Applet)和 Stop(停止)权限配置文件指定给用户。
    # usermod -P "Desktop Applets,Stop" username

    该用户没有 Basic Solaris User(基本 Solaris 用户)或 Console User(控制台用户)权限配置文件。因此,该用户不能运行 Desktop Applets(桌面 Applet)权限配置文件中的命令以外的任何命令。例如,用户无权访问终端窗口。

    有关更多信息,请参见权限配置文件搜索指定安全属性的顺序《Trusted Extensions 配置和管理》中的"如何限定用户仅使用桌面应用程序"

    usermod 命令可以修改在本地命名服务或 LDAP 中定义的用户属性。有关此命令的参数,请参见 usermod(1M) 手册页。

如何将管理员限于显式指定的权限

您可以通过下列两种方式限制角色或用户,使其执行有限数量的管理操作。

开始之前

您必须是 root 角色。

示例 9-25 修改系统以使权限仅对其用户可用

在以下示例中,管理员将创建一个仅可以用来管理网络的系统。管理员将从 policy.conf 文件中删除 Basic Solaris User(基本 Solaris 用户)权限配置文件和 solaris.device.cdrw 授权。不删除 Console User(控制台用户)权限配置文件。在生成的 policy.conf 文件中,受影响的行如下所示:

...
#AUTHS_GRANTED=solaris.device.cdrw
#PROFS_GRANTED=Basic Solaris User
CONSOLE_USER=Console User
...

只有显式为其指定了授权、命令或权限配置文件的用户才能使用该系统。登录后,已授权的用户可以执行管理任务。如果授权的用户位于该系统上,则该用户将拥有 Console User(控制台用户)权限。

如何让用户使用自己的口令承担角色

缺省情况下,用户只有键入角色的口令才能承担角色。执行以下过程可使在 Oracle Solaris 中承担角色的过程与在 Linux 环境中承担角色的过程相似。

开始之前

您必须已承担了包括 User Security(用户安全)权限配置文件的角色。该角色不得是要更改其 roleauth 值的角色。

示例 9-26 使用权限配置文件时允许角色使用指定的用户的口令

在以下示例中,root 角色可在本地系统上更改角色 secadminroleauth 值。

# profiles -K roleauth=user "System Administrator"

当指定了 Security Administrator(安全管理员)权限配置文件的用户要承担该角色时,系统将提示用户需要输入口令。在以下序列中,角色名称为 secadmin

% su - secadmin
Password: Type user password
$ /** You are now in a profile shell with administrative rights**/

如果已为用户指定了其他角色,则用户也将使用自己的口令对这些角色进行验证。

示例 9-27 更改 LDAP 系统信息库中角色的 roleauth

在以下示例中,root 角色允许可以承担角色 secadmin 的所有用户在承担角色时使用自己的口令。对于由 LDAP 服务器管理的所有系统上的这些用户,都授予了该功能。

# rolemod -S ldap -K roleauth=user secadmin
# profiles -S ldap -K roleauth=user "Security Administrator"

故障排除

如果已对角色设置 roleauth=user,则通过用户口令,验证的角色可以访问指定给该角色的所有权限。此关键字是搜索相关关键字。有关更多信息,请参见搜索指定安全属性的顺序

如何将 root 角色更改为用户

当管理员淘汰已从网络中删除的系统时,可能会将 root 更改为用户。在该实例中,以 root 身份登录系统可简化清除过程。

开始之前

您必须成为分配有 User Management(用户管理)和 User Security(用户安全)权限配置文件的管理员。

  1. 从本地用户中删除 root 角色指定。

    例如,从两个用户中删除角色指定。

    % su - root
    Password: a!2@3#4$5%6^7
    # roles jdoe
    root
    # roles kdoe
    root
    # roles ldoe
    secadmin
    # usermod -R "" jdoe
    # usermod -R "" kdoe
    #
  2. root 角色更改为用户。
    # rolemod -K type=normal root

    当前承担 root 角色的用户保持不变,而具有 root 访问权限的其他用户可以使用 su 命令成为 root 或以 root 用户身份登录系统。

  3. 验证更改。

    您可以使用以下命令之一。

    # getent user_attr root
    root::::auths=solaris.*;profiles=All;audit_flags=lo\:no;lock_after_retries=no;
    min_label=admin_low;clearance=admin_high

    如果输出中缺少 type 关键字或此关键字等于 normal,则此帐户不是一个角色。

    # userattr type root

    如果输出为空或列出了 normal,则此帐户不是一个角色。

示例 9-28 防止 root 角色被用于配置系统

在以下示例中,站点安全策略要求应防止 root 帐户维护系统。管理员已创建和测试维护系统的角色。这些角色包括每个安全配置文件和 System Administrator(系统管理员)权限配置文件。已为一位可信用户指定了可以恢复备份的角色。没有任何角色可以更改系统、用户或权限配置文件的审计标志。

为防止使用 root 帐户维护系统,安全管理员删除了 root 的 role 指定。由于 root 帐户必须能够以单用户模式登录到系统,所以该帐户保留了一个口令。

# rolemod -K roles= jdoe
# userattr roles jdoe

示例 9-29 将 root 用户更改为 root 角色

在此示例中,root 用户将 root 用户恢复为角色。

首先,rootroot 帐户更改为角色并验证此更改。

# rolemod -K type=role root
# getent user_attr root
root::::type=role;auths=solaris.*;profiles=All;audit_flags=lo\:no;
lock_after_retries=no;min_label=admin_low;clearance=admin_high

然后,rootroot 角色指定给一个本地用户。

# usermod -R root jdoe

故障排除

在桌面环境中,如果 root 为角色,则您不得以 root 身份直接登录。一条诊断消息会指出 root 在您的系统中为角色。

如果您没有可以承担 root 角色的本地帐户,请创建一个。在单用户模式下以 root 身份登录到系统,创建一个本地用户帐户和口令,并将 root 角色指定给该新帐户。然后,以新用户的身份登录并承担 root 角色。