跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
如何在 Solaris Management Console 中承担角色
19. 使用 Oracle Solaris 安全 Shell(任务)
Solaris Management Console GUI 是管理 RBAC 的首选方法。
注 - 请勿尝试同时使用命令行和图形用户界面来管理 RBAC。这样可能会导致对配置所做的更改出现冲突,从而使得行为不可预测。这两种工具都可以管理 RBAC,但是不能同时使用二者。
开始之前
您必须已承担拥有 User Security(用户安全)配置文件的角色或已切换至超级用户。您不能处于您要更改其口令的角色中。角色不能更改其自己的口令。
$ passwd -r naming-service target-rolename
将口令更改应用到以下系统信息库之一:files、nis、nisplus 或 ldap。如果未指定系统信息库,则在 files 中更改口令。
要修改的现有角色的名称。
有关更多命令选项,请参见 passwd(1) 手册页。
要启动控制台,请参见如何在 Solaris Management Console 中承担角色。
登录角色不能是目标角色。
Files(文件)范围用于修改本地系统上的角色口令。LDAP 范围用于修改 LDAP 命名服务中的角色口令。
有关更多详尽信息,请参见联机帮助。
此命令将作为 Solaris Management Console 服务器的客户机运行。
$ /usr/sadm/bin/smrole -D domain-name -r admin-role -l <Type admin-role password> \ modify -- -n target-rolename -P password
要管理的域的名称。
可以修改目标角色的管理角色的名称。管理角色必须具有 solaris.admin.usermgr.pswd 授权。管理角色和目标角色不能是同一角色。
admin-role 的口令输入提示。
验证选项和子命令选项之间必需的分隔符。
目标角色的名称。
target-rolename 的新口令。
有关命令选项的完整列表,请参见 smrole(1M) 手册页。
示例 9-13 使用 passwd 命令更改本地角色的口令
在本示例中,超级用户将更改本地 operadm 角色的口令。
# passwd -r files operadm New password: Type new password Re-enter new password: Retype new password
示例 9-14 在 LDAP 系统信息库中更改角色的口令
在本示例中,Primary Administrator(主管理员)角色将更改 LDAP 目录服务中 operadm 角色的口令。
$ passwd -r ldap operadm New password: Type new password Re-enter new password: Retype new password
示例 9-15 使用 smrole modify 命令更改角色的口令
在本示例中,管理员将联系 Solaris Management Console 服务器以更改 NIS 域中的 operadm 口令。如果管理员在按下回车键之前没有提供口令,则会显示 New Password:(新口令:)提示。
$ /usr/sadm/bin/smrole -D nis:/examplehost/example.domain \ -r primaryadm -l <Type primaryadm password> \ modify -- -n operadm -P Press the Return key New Password: a!2@3#4$5%6*7 $
开始之前
要更改角色属性,您必须承担拥有 Primary Administrator(主管理员)权限配置文件的角色或切换到用户 root。角色属性包括口令、权限配置文件和授权。
要启动控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在 "Administrative Roles"(管理角色)中修改角色。有关更多详尽信息,请参见联机帮助。
$ rolemod -c comment -P profile-list rolename
描述角色功能的新注释。
角色具有的配置文件的列表。此列表将替换当前的配置文件列表。
要修改的现有本地角色的名称。
有关更多命令选项,请参见 rolemod(1M) 手册页。
此命令可修改 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
要管理的域的名称。
可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。
admin-role 的口令输入提示。
验证选项和子命令选项之间必需的分隔符。
新角色的名称。
无法再承担 rolename 的用户的名称。
现在可以承担 rolename 的用户的名称。
有关更多命令选项,请参见 smrole(1M) 手册页。
示例 9-16 使用 rolemod 命令更改本地角色的属性
在本示例中,将修改 operadm 角色以使其具有 FTP Management(FTP 管理)权限配置文件。
$ rolemod -c "Handles printers, backup, and FTP" \ -P "Operator,FTP Management,All" operadm
这些权限配置文件将添加到通过 policy.conf 文件授予的配置文件。
示例 9-17 使用 smrole modify 命令更改本地角色的属性
在以下示例中,将修改 operadm 角色以添加 FTP Management(FTP 管理)权限配置文件。
$ /usr/sadm/bin/smrole -r primaryadm -l <Type primaryadm password> \ modify -- -n operadm -c "Handles printers, backup, and FTP" \ -p "FTP Management"
示例 9-18 使用 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
权限配置文件是一种角色属性。如果 prof_attr 数据库不包含满足您需求的权限配置文件,则应创建或更改权限配置文件。要了解有关权限配置文件的更多信息,请参见RBAC 权限配置文件。
开始之前
要创建或更改权限配置文件,您必须已承担 Primary Administrator(主管理员)角色或已切换到超级用户。
要启动控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在 "Rights"(权限)中创建或更改权限配置文件。有关更多详尽信息,请参见联机帮助。
使用此命令可以添加、修改、列出或删除权限配置文件。此命令可在文件以及 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
要管理的域的名称。
可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。
admin-role 的口令输入提示。
验证选项和子命令选项之间必需的分隔符。
新配置文件的名称。
配置文件的简短说明。
已创建并放置在 /usr/lib/help/profiles/locale/C 目录中的 HTML 帮助文件的名称。
此权限配置文件中包括的现有权限配置文件的名称。您可以指定多个 -p supplementary-profile 选项。
有关更多命令选项,请参见 smprofile(1M) 手册页。
示例 9-19 通过命令行修改权限配置文件
在以下示例中,Network Management(网络管理)权限配置文件充当 Network Security(网络安全)权限配置文件的补充配置文件。具有 Network Security(网络安全)配置文件的角色现在可以配置网络和主机,而且还可以运行与安全相关的命令。
$ /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-20 使用 Rights(权限)工具创建新的权限配置文件
下表列出了名为 "Build Administrator"(生成管理员)的假设的权限配置文件的样例数据。此权限配置文件包括子目录 /usr/local/swctrl/bin 中的命令。这些命令的有效 UID 为 0。Build Administrator(生成管理员)权限配置文件适用于管理软件开发的生成和版本控制的管理员。
|
故障排除
角色的权限配置文件是否按功能从高到低的顺序在 GUI 中列出?
例如,如果 All(所有)权限配置文件位于列表顶部,则不会运行具有安全属性的命令。包含具有安全属性的命令的配置文件在列表中必须位于 All(所有)权限配置文件的前面。
角色的权限配置文件中是否多次列出了某个命令?如果是这样,第一个命令实例是否具有所需的全部安全属性?
例如,某个命令可以要求该命令特定选项的特权。为使要求特权的选项成功运行,列表中的最高权限配置文件的第一个命令实例必须具有指定的特权。
角色的权限配置文件中的命令是否具有相应的安全属性?
例如,如果策略为 suser,则某些命令要求 uid=0 而非 euid=0 才能成功运行。
名称服务高速缓存 svc:/system/name-service-cache 是否已重新启动?
nscd 守护进程可以具有很长的生存时间间隔。通过重新启动此守护进程,可使用当前数据更新该名称服务。
用户属性包括口令、权限配置文件和授权。为用户提供管理权能的最安全方法是将角色指定给用户。有关讨论,请参见直接指定安全属性时的安全注意事项。
开始之前
您必须承担拥有 Primary Administrator(主管理员)权限配置文件的角色,或切换到用户 root。
要启动控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在 "User Accounts"(用户帐户)中修改用户。有关更多详尽信息,请参见联机帮助。
提示 - 为用户直接指定授权、特权或权限配置文件并不是一个好的做法。首选方法是将角色指定给用户。然后,用户承担角色以执行特权操作。
此命令可修改本地名称服务中定义的用户的属性。
$ usermod -R rolename username
现有本地角色的名称。
要修改的现有本地用户的名称。
有关更多命令选项,请参见 usermod(1M) 手册页。
此命令可修改 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
要管理的域的名称。
可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。
admin-role 的口令输入提示。
验证选项和子命令选项之间必需的分隔符。
指定了 rolename 的用户的名称。
将指定给 username 的角色的名称。您可以指定多个 -a rolename 选项。
有关更多命令选项,请参见 smuser(1M) 手册页。
示例 9-21 通过命令行修改本地用户的 RBAC 属性
在本示例中,用户 jdoe 现在可以承担 System Administrator(系统管理员)角色。
$ usermod -R sysadmin jdoe
为此角色添加了该用户可以承担的角色。
示例 9-22 使用 smuser 命令修改用户的 RBAC 属性。
在本示例中,为用户 jdoe 指定了两个角色:System Administrator(系统管理员)和 Operator(操作员)。由于该用户和这两个角色是在本地定义的,因此不必使用 -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
传统应用程序是一个命令或一组命令。先针对权限配置文件中的每个命令设置安全属性。然后,在角色中包括该权限配置文件。承担该角色的用户便可以运行具有安全属性的传统应用程序。
要将传统应用程序添加到 Solaris Management Console,请参见《系统管理指南:基本管理》中的"向 Solaris Management Console 中添加工具"。
开始之前
要更改权限配置文件中命令的安全属性,您必须已承担 Primary Administrator(主管理员)角色或已切换到超级用户。
要启动控制台,请参见如何在 Solaris Management Console 中承担角色。请按照左侧窗格中的说明在 "Rights"(权限)中修改权限配置文件。有关更多详尽信息,请参见联机帮助。
向传统应用程序添加安全属性的方式与为任何命令添加安全属性的方式相同。您必须将具有安全属性的命令添加到权限配置文件。对于传统命令,请为命令指定 euid=0 或 uid=0 安全属性。有关该过程的详细信息,请参见如何创建或更改权限配置文件。
要向角色添加权限配置文件,请参见如何更改角色的属性。
示例 9-23 向脚本中的命令添加安全属性
如果某个脚本中的命令需要设置 setuid 位或 setgid 位才能成功运行,则必须在权限配置文件中为该脚本的可执行脚本和命令添加安全属性。然后,在角色中包括该权限配置文件,并将该角色指定给用户。当用户承担该角色并执行该脚本时,此命令便会以安全属性运行。
要将安全属性添加到命令或 shell 脚本,请参见如何创建或更改权限配置文件。
示例 9-24 检查脚本或程序中的授权
要检查脚本授权,需要添加一项基于 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 授权,需要检查以下字符串:
solaris.admin.usermgr.write
solaris.admin.usermgr.*
solaris.admin.*
solaris.*
如果您要编写程序,请使用函数 getauthattr() 对授权进行测试。