Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1173105
  • 博文数量: 128
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 4870
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-19 14:28
文章分类

全部博文(128)

文章存档

2010年(2)

2009年(22)

2008年(104)

我的朋友

分类:

2008-09-11 11:47:24

Solaris 10角色管理命令使用攻略

一、角色的概述

  对于传统的Unix安全性模型,超级用户拥有完全的超级用户特权,而其他的用户没有足够的权限解决他们自己的问题。有了基于角色的访问控制(RBAC),便可以取代传统的安全模型。有了RBAC,可以将超级用户的能力分成不同的包,并将它们分别分配给分担管理任务的个体。当使用RBAC划分超级用户特权时,用户可以拥有不同程度的访问权限,可以控制对其他用户特权操作的授权。RBAC包括了如下特性。

  1、角色:一种特殊类型的用户账号,可以用来执行一套管理任务。

  在默认情况下,Solaris 支持3种不同的系统管理角色

  主管理员(PA,Primary Administrator):负责为其他用户分派权限,并负责系统的安全问题。等效于root 用户或超级用户的功能强大的角色。

  系统管理员(SA,System Administrator):负责与安全无关的日常管理工作。

  操作员(Operator):执行备份和设备维护操作。

  PA和SA之间的区别主要取决于本地的安全策略。例如,尽管默认的PA角色具备添加用户和修改口令的权限,而默认的SA角色并不具备修改口令的权限,但在很多地方,禁止SA的口令访问可能是不现实的。RBAC的一个最大的好处就是它可以按照本地的需求非常方便地分配权限。

  2、特征文件(profile):一种打包机制,用特殊的属性将授权和命令分组。例如,使用用户和组的ID。

  特征文件是用于授权的一个或一组特定的命令。这些授权连接在一起形成某个角色,并随后与某个用户或某些不同的用户建立关联关系。我们可以为每个角色创建一个新的用户账号,这些账号拥有自己的主目录和口令。当执行特征文件中的命令时,用户必须使用su命令进入角色账户,因为这种角色用户是不允许直接登录的。通过su命令访问角色账户与通过su命令访问普通账户的一个不同之处在于它们的审计功能,即在通过su命令访问某个角色时,它执行的所有操作,连同用户的原始UID都会被记入日志。这样,每个访问角色的用户操作都会被明确地记入日志并进行审计。

  3、授权:一种用来授予对受限功能的访问权限的权利。

  授权,就是赋予某个角色执行某项操作的特权,它是在/etc/security/auth_attr文件中定义的。授权的定义形式与Internet的域名非常相似,它的最左边为企业名称,随后是依次细化的软件包和功能内容。在默认情况下,所有Solaris提供的软件包都是由前缀Solaris来加以识别的。比如,修改口令的授权就是Solaris.admin.usermgr.pswd,许多授权的划分都是十分细致的,它可能只允许读访问,而不允许写访问,反之也是如此。比如,主管理员(PA)可能拥有Solaris.admin.usermgr.read和Solaris.admin.usermgr.write的授权,因而可以对用户配置文件分别进行读访问和写访问操作。而系统管理员(SA)虽然可能拥有Solaris.admin.usermgr.read授权,但他并没有Solaris.admin.usermgr.write的授权,因此他可以读用户配置文件,但不能写。

二、RBAC的四个数据库

  Solaris共有四个RBAC数据库用于角色的管理。下面依次介绍:

  1、扩展的用户属性数据库(/etc/user_attr):将用户、角色、授权和权限配置文件相关联。

  数据库user_attr是惟一需要的数据库,其他数据库的使用取决于实现哪种安全功能。/etc/user_attr数据库补充了passwd和shadow数据库。它包含了扩展的用户属性,例如,授权和执行profile。它也帮助你将角色分配给一个用户。一个角色是一种特殊类型的用户账号,允许一个用户执行一组管理任务。它与一个普通的用户账号类似,只是不通过登录窗口访问角色,只能用su命令来访问他们的角色。

  2、授权属性数据库(/etc/security/auth_attr):定义了授权及其授权的属性,标识了相关的帮助文件。

  所有的授权都被存储在/etc/security/auth_attr数据库中。当直接将授权分配给用户或角色时,授权被输入user_attr数据库中。也可以为执行profile指定授权,这些授权接下来就被分配给用户。特定的特权程序能够查看授权,并确定用户是否能够执行受限功能。例如,一个要编辑另一个用户的crontab文件的用户需要有Solaris.jobs.admin授权。

  3、权限配置文件数据库(/etc/security/prof_attr):定义权限配置文件,列出权限配置文件分配的授权,标识了相关的帮助文件。

  权限配置被存储在prof_attr数据库中。有了权限配置文件,就可以使用特殊的属性将授权和命令分组,并将其分配给用户或角色。特殊的属性包括真正有效的UID和GID。最常见的属性是将真正有效的UID设置为root。

  4、权限执行属性数据库(/etc/security/exec_attr):定义了分配给一个权限配置文件的特权操作。

  与权限配置文件相联系的执行属性就是命令。命令能够使被赋予了配置文件的用户或角色运行特殊的安全属性。Exec_attr文件包括了与权限配置文件相关联的一个基本命令列表。

  另外policy.conf文件提供将应用于所有用户的默认属性。
三、RBAC几大特点

  (1)访问权限与角色相关联,不同的角色有不同的权。用户以什么样的角色对资源进行访问,决定了用户拥有的权限以及可执行何种操作。

  (2)角色继承。角色之间可能有互相重叠的职责和权力,属于不同角色的用户可能需要执行一些相同的操作。RBAC 采用角色继承的概念,如角色2继承角色1,那么管理员在定义角色2时就可以只设定不同于角色1的属性及访问权限,避免了重复定义。

  (3)最小权限原则,即指用户所拥有的权力不能超过他执行工作时所需的权限。实现最小特权原则,需要分清用户的工作职责,确定完成该工作的最小权限集,然后把用户限制在这个权限结合的范围之内。一定的角色就确定了其工作职责,而角色所能完成的事物蕴涵了其完成工作所需的最小权限。用户要访问信息首先必须具有相应的角色,用 户无法饶过角色直接访问信息。

  (4)职责分离。一般职责分离有两种方式:静态和动态。

  (5)角色容量。在一个特定的时间段内,有一些角色只能有一定人数的用户占用。在创建新的角色时应该指定角色的容量。

  四、总结

  基于角色的访问控制是一种方便、安全、高效的访问控制机制。本文介绍了基于角色的访问控制(RBAC)的工作原理,RBAC在Solaris 下的实现可以通过两种方法:RBAC命令和SMC。后边笔者会依次介绍。

下面结合相关命令进行创建角色。Solaris Management Console 是管理 RBAC 的首选方法。另外,还可以使用命令行界面。虽然可以手动编辑本地 RBAC 数据库,但是强烈建议不要进行此类编辑。以下命令可用于管理对具有 RBAC 的任务进行访问。表1是RBAC 相关管理命令

  表1 RBAC 管理命令

命令名称
功能说明
auths
显示用户的授权。
makedbm
生成 dbm 文件。
nscd
名称服务高速缓存守护,适用于高速缓存 user_attr、prof_attr 和 exec_attr 数据库。使用 svcadm 命令重新启动守护进程。
pam_roles
PAM 的角色帐户管理模块。检查承担角色的授权。
pfexec
由配置文件 使用以执行在 exec_attr 数据库中指定的带有安全属性的命令。
.conf
系统安全策略的配置文件。列出授予的授权、授予的权限和其他安全信息。policy.conf 文件提供了向所有用户授予特定权限配置文件、特定授权和特定权限的方法。
profiles
显示指定用户的权限配置文件。
roles
显示指定用户可以承担的角色。
roleadd
向本地系统中添加角色。
roledel
从本地系统中删除角色。
rolemod
在本地系统上修改角色的属性。
smattrpop
将源安全属性数据库合并到目标数据库。用于需要将本地数据库合并到名称服务的情况。还用于未提供转换脚本的升级。
smexec
管理 exec_attr 数据库中的项。要求验证。
smmultiuser
管理对用户帐户的批量操作。要求验证。
smprofile
管理 prof_attr 和 exec_attr 数据库中的权限配置文件。要求验证。
smrole
管理角色帐户中的角色和用户。要求验证。
smuser
管理用户项。要求验证。
useradd
向系统中添加用户帐户。-P 选项将角色指定给用户帐户。
userdel
从系统中删除用户的登录。
usermod
修改系统上的用户帐户属性。

      下面结合具体例子,介绍角色管理命令的使用。
  应用实例1通过命令行在本地创建角色
  l 承担主管理员角色,或成为root超级用户。
  l 选择roleadd 命令,在本地命令行上创建角色。命令如下: 

# roleadd -c  -g group -m homedir -u UID -s shell -P  rolename

  参数说明
  c comment :描述 rolename 的注释。
  -g group :rolename 的组指定。
  -m homedir :rolename 的起始目录的路径。
  -u UID :rolename 的 UID。
  -s shell :rolename 的登录 shell。此 shell 必须是配置文件 shell。
  -P profile :rolename 的一个或多个权限配置文件。
  rolename :新本地角色的名称。
  说明:运行 roleadd 命令后,还必须运行 usermod 命令才能将角色指定给用户。
      然后,用户还必须为角色设置口令,命令如下:
  l 将角色指定给本地用户。如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。 

# usermod -u UID -R rolename

  参数说明
  -u UID :用户的 UID。
  -R rolename :指定给用户的角色。
  l 要使更改生效,请重新启动名称服务高速缓存守护进程,命令如下:

# svcadm restart /namservice-

  l 要解除锁定角色帐户,用户必须创建口令。如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。 

      % su rolename
  Password: <键入 rolename 的口令>
  Confirm Password: <重新键入 rolename 的口令>

应用实例2 :通过命令行让root 用户成为角色:
  l 以普通用户身份登录到目标主机。
  l 承担主管理员角色,或成为超级用户。
  l 创建可承担 root 角色的本地用户。命令如下:

$ useradd -c  -d homedir username

  参数说明
  -c comment :描述用户的注释。
  -d homedir :用户的起始目录。此目录应位于本地系统中。
  Username :新本地用户的名称。
  命令实例:

# useradd -c "Local administrative user" -d /export/home1 admuser

  l 为用户指定口令。 

      # passwd -r files admuser
      New Password: <键入口令>
  Renter new Password: <重新键入口令>
  passwd: successfully changed for admuser

  l 将 root 用户更改为角色。 

# usermod -K type=role root

  l 查看 root 是否为角色。
  user_attr 文件中 root 项的显示应与以下内容类似:

      root::::type=role;auths=solaris.*,solaris.grant;profiles=Web Console
  Management,All;lock_after_retries=no

  l 将 root 角色指定给本地管理用户。

# usermod -R root admuser

  l 将 root 角色指定给名称服务中选定的用户帐户。
  在以下示例中,用户承担 root 角色。

% roles
root
% su root
Password: <键入 root 的口令>
# /usr/ucb/whoami 提示符更改为角色提示符
root
$ ppriv $$

  说明:完成此过程后,将无法再以 root 身份登录到系统,但在单用户模式下除外。如果已为您指定 root 角色,则可以对 root 执行 su。通过将 root 用户更改为角色,可以防止匿名 root 登录。由于用户必须首先登录,然后才能承担 root 角色,因此用户的登录 ID 将提供给审计服务并位于 sulog 文件中。如果将 root 用户更改为角色,但未将该角色指定给有效用户,或当前没有与 root 用户等效的现有角色,则任何用户都不能成为超级用户。为安全起见,至少应为一个本地用户指定 root 角色。如果以 root 身份登录,则无法执行此过程。您必须以自身身份登录,然后才能对 root 执行 su。
应用实例3 :通过命令行更改角色的属性
  使用 smrole modify 命令更改本地角色的属性:
  在以下示例中,将修改 opera 角色以添加介质恢复权限配置文件。

$ /usr/sadm/bin/smrole -r primaryadm -l   \
modify -- -n opera -c "Handles printers, backup, AND " \
-p "Media Restore"

  使用 smrole modify 命令更改中的角色
  在以下示例中,将更改 clockm 角色。ID 为 108 的 用户无法再承担该角色。ID 为 110 的 NIS 用户可以承担 clockm角色。
$ /usr/sadm/bin/smrole -D nis:/examplehost/example.domain \
-r primaryadm -l  \
modify -- -n clockm-r 108 -u 110
  总结:到此为止简单介绍了Solaris 10 角色的管理命令使用方法,本文转自以下地址:
阅读(1334) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~