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

管理 RBAC

Solaris Management Console GUI 是管理 RBAC 的首选方法。


注 –

请勿尝试同时使用命令行和图形用户界面来管理 RBAC。这样可能会导致对配置所做的更改出现冲突,从而使得行为不可预测。这两种工具都可以管理 RBAC,但是不能同时使用二者。


Procedure如何更改角色的属性

开始之前

要更改角色属性,您必须已承担主管理员角色或已切换到超级用户。角色属性包括口令、权限配置文件和授权。

    使用以下方法之一更改角色属性。

    • 使用 Solaris Management Console 中的“用户”工具。

      要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“管理角色”中修改角色。有关更详细的信息,请参见联机帮助。

    • 使用 rolemod 命令。

      此命令可修改本地名称服务中定义的角色的属性。


      $ rolemod -c comment -P profile-list rolename
      
      -c comment

      描述角色功能的新注释。

      -P profile-list

      角色具有的配置文件的列表。此列表将替换当前的配置文件列表。

      rolename

      要修改的现有本地角色的名称。

      有关更多命令选项,请参见 rolemod(1M) 手册页。

    • 使用包含 modify 子命令的 smrole 命令。

      此命令可修改 NIS、NIS+ 或 LDAP 等分布式名称服务中的角色的属性。此命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smrole -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      modify -- -n rolename  -r username -u username
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n rolename

      新角色的名称。

      -r username

      无法再承担 rolename 的用户的名称。

      -u username

      现在可以承担 rolename 的用户的名称。

      有关更多命令选项,请参见 smrole(1M) 手册页。


示例 9–11 使用 rolemod 命令更改本地角色的属性

在本示例中,将修改 operadm 角色以使其具有介质恢复权限配置文件。


$ rolemod -c "Handles printers, backup, AND restore" \

-P "Printer Management,Media Backup,Media Restore,All" operadm


示例 9–12 使用 smrole modify 命令更改本地角色的属性

在以下示例中,将修改 operadm 角色以添加介质恢复权限配置文件。


$ /usr/sadm/bin/smrole -r primaryadm -l <Type primaryadm password> \

modify -- -n operadm -c "Handles printers, backup, AND restore" \

-p "Media Restore"


示例 9–13 使用 smrole modify 命令更改域中的角色

在以下示例中,将更改 clockmgr 角色。ID 为 108 的 NIS 用户无法再承担该角色。ID 为 110 的 NIS 用户可以承担 clockmgr 角色。


$ /usr/sadm/bin/smrole -D nis:/examplehost/example.domain \

-r primaryadm -l <Type primaryadm password> \

modify -- -n clockmgr -r 108 -u 110

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

权限配置文件是一种角色属性。如果 prof_attr 数据库不包含满足您需求的权限配置文件,则应创建或更改权限配置文件。要了解有关权限配置文件的更多信息,请参见RBAC 权限配置文件

开始之前

要创建或更改权限配置文件,您必须已承担主管理员的角色或已切换到超级用户。

    使用以下方法之一更改角色的属性。

    • 使用 Solaris Management Console 中的“用户”工具。

      要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“权限”中创建或更改权限配置文件。有关更详细的信息,请参见联机帮助。

    • 使用 smprofile 命令。

      使用此命令可以添加、修改、列出或删除权限配置文件。此命令可在文件以及 NIS、NIS+ 或 LDAP 等分布式名称服务中运行。smprofile 命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smprofile -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      add | modify -- -n profile-name \
      
      -d description  -m help-file -p supplementary-profile
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n profile-name

      新配置文件的名称。

      -d description

      配置文件的简短说明。

      -m help-file

      已创建并放置在 /usr/lib/help/profiles/locale/C 目录中的 HTML 帮助文件的名称。

      -p supplementary-profile

      此权限配置文件中包括的现有权限配置文件的名称。您可以指定多个 -p supplementary-profile 选项。

      有关更多命令选项,请参见 smprofile(1M) 手册页。


示例 9–14 通过命令行修改权限配置文件

在以下示例中,网络管理权限配置文件充当网络安全权限配置文件的补充配置文件。包含网络安全配置文件的角色现在可以配置网络和主机,而且还可以运行与安全相关的命令。


$ /usr/sadm/bin/smprofile -D nisplus:/example.host/example.domain \

-r primaryadm -l <Type primaryadm password> \

modify -- -n "Network Security" \

-d "Manage network and host configuration and security" \

-m RtNetConfSec.html -p "Network Management"

运行此命令之前,管理员创建了一个新的帮助文件 RtNetConfSec.html,并将其放置在 /usr/lib/help/profiles/locale/C 目录中。



示例 9–15 使用权限工具创建新的权限配置文件

下表列出了名为“生成管理员”的假设的权限配置文件的样例数据。此权限配置文件包括子目录 /usr/local/swctrl/bin 中的命令。这些命令的有效 UID 为 0。生成管理员权限配置文件适用于管理软件开发的生成和版本控制的管理员。

选项卡 

字段 

示例 

一般 

名称 

生成管理员 

 

说明 

用于管理软件生成和版本控制。 

 

帮助文件名称 

BuildAdmin.html

命令 

添加目录 

单击“添加目录”,在对话框中键入 /usr/local/swctrl/bin,然后单击“确定”。

 

命令遭拒/许可的命令 

/usr/local/swctrl/bin 移动到“许可的命令”列。

 

设置安全性属性 

选择 /usr/local/swctrl/bin,单击“设置安全性属性”,然后将“有效 UID”设置为 root

授权 

排除的授权/包括的授权 

无授权。

辅助权限 

排除的权限/包括的权限 

无补充权限配置文件。


故障排除

如果权限配置文件没有为角色提供所需的功能,请检查以下情况:

Procedure如何更改用户的 RBAC 属性

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

开始之前

要更改用户属性,您必须已承担主管理员角色或已切换到超级用户。

    使用以下方法之一更改用户的 RBAC 属性。

    • 使用 Solaris Management Console 中的“用户”工具。

      要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“用户帐户”中修改用户。有关更详细的信息,请参见联机帮助。


      提示 –

      为用户直接指定授权、特权或权限配置文件并不是一个好的做法。首选方法是将角色指定给用户。然后,用户承担角色以执行特权操作。


    • 使用 usermod 命令。

      此命令可修改本地名称服务中定义的用户的属性。


      $ usermod -R rolename username
      
      -R rolename

      现有本地角色的名称。

      username

      要修改的现有本地用户的名称。

      有关更多命令选项,请参见 usermod(1M) 手册页。

    • 使用包含 modify 子命令的 smuser 命令。

      此命令可修改 NIS、NIS+ 或 LDAP 等分布式名称服务中的用户的属性。此命令将作为 Solaris Management Console 服务器的客户机运行。


      $ /usr/sadm/bin/smuser -D domain-name \ 
      
      -r admin-role -l <Type admin-role password> \
      
      modify -- -n username -a rolename
      
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n username

      指定了 rolename 的用户的名称。

      -a rolename

      将指定给 username 的角色的名称。您可以指定多个 -a rolename 选项。

      有关更多命令选项,请参见 smuser(1M) 手册页。


示例 9–16 通过命令行修改本地用户的 RBAC 属性

在本示例中,用户 jdoe 现在可以承担系统管理员的角色。


$ usermod -R sysadmin jdoe


示例 9–17 使用 smuser 命令修改用户的 RBAC 属性

在本示例中,为用户 jdoe 指定了两个角色:系统管理员和操作员。由于该用户和这两个角色是在本地定义的,因此不必使用 -D 选项。


$ /usr/sadm/bin/smuser -r primaryadm -l <Type primaryadm password> \

modify -- -n jdoe -a sysadmin -a operadm

在以下示例中,该用户是在 NIS 名称服务中定义的。因此,需要使用 -D 选项。两个角色是在名称服务中定义的。角色 root 是在本地定义的。


$ /usr/sadm/bin/smuser -D nis:/examplehost/example.domain \

-r primaryadm -l <Type primaryadm password> \

modify -- -n jdoe -a sysadmin -a operadm -a root

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

传统应用程序是一个命令或一组命令。先针对权限配置文件中的每个命令设置安全性属性。然后,在角色中包括该权限配置文件。承担该角色的用户便可以运行具有安全性属性的传统应用程序。

要将传统应用程序添加到 Solaris Management Console,请参见《系统管理指南:基本管理》中的“向 Solaris Management Console 中添加工具”

开始之前

要更改权限配置文件中命令的安全性属性,您必须已承担主管理员角色或已切换到超级用户。

  1. 使用 Solaris Management Console 中的“用户”工具。

    要启动该控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在“权限”中修改权限配置文件。有关更详细的信息,请参见联机帮助。

  2. 向实现传统应用程序的命令添加安全性属性。

    向传统应用程序添加安全性属性的方式与为任何命令添加安全性属性的方式相同。您必须将具有安全性属性的命令添加到权限配置文件。对于传统命令,请为命令指定 euid=0uid=0 安全性属性。有关该过程的详细信息,请参见如何创建或更改权限配置文件

  3. 将传统应用程序添加到权限配置文件后,在角色的配置文件列表中包括该权限配置文件。

    要向角色添加权限配置文件,请参见如何更改角色的属性


示例 9–18 向脚本中的命令添加安全性属性

如果某个脚本中的命令需要设置 setuid 位或 setgid 位才能成功运行,则将必须在权限配置文件中为该脚本的可执行脚本命令添加安全性属性。然后,在角色中包括该权限配置文件,并将该角色指定给用户。当用户承担该角色并执行该脚本时,此命令便会以安全性属性运行。

要将安全性属性添加到命令或 shell 脚本,请参见如何创建或更改权限配置文件



示例 9–19 检查脚本或程序中的授权

要检查脚本授权,需要添加一项基于 auths 命令的测试。有关此命令的详细信息,请参见 auths(1) 手册页。

例如,以下行会测试用户是否具有作为 $1 参数提供的授权:


if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then

        echo Auth granted

else

        echo Auth denied

fi

要使测试更加完整,应在测试中包括检查其他使用通配符的授权的逻辑。例如,要测试用户是否具有 solaris.admin.usermgr.write 授权,需要检查以下字符串:

如果您要编写程序,请使用函数 getauthattr() 对授权进行测试。