Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1143174
  • 博文数量: 286
  • 博客积分: 3124
  • 博客等级: 中校
  • 技术积分: 5186
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 23:42
个人简介

Bomi

文章存档

2015年(1)

2013年(1)

2012年(281)

2008年(3)

分类: 系统运维

2012-02-04 01:02:48

OpenSolaris OS  中基于角色的访问控制(Role-Based Access Control, RBAC)方案是 Sun 为 Solaris  操作系统开发的开源项目,它提供了权限配置文件。在 基于角色的访问控制和特权  教程中,权限配置文件被定义为“可以分配给角色或用户的管理功能集合”。权限配置文件可以包含验证、带有安全属性的命令和其他权限配置文件,是一种对安全属性进行分组的便捷方法。
使用  RBAC,系统管理员可以创建一个角色,向该角色分配一个权限配置文件,然后向用户分配配置文件。您还可以直接向用户分配角色。然后,这些用户可以执行由权限配置文件定义的任务,甚至必以超级用户的身份登录就可执行根命令。这些用户需要做的所有事情就是将实用程序  pfexec 附加在各命令前面。在 Linux 中,pfexec 的作用等价于无密码的  su 或者 sudo。
本文介绍如何向用户委派管理任务,以及如何通过权限配置文件向用户分配根特权。假定您熟悉 OpenSolaris 操作系统中的 RBAC  概念和命令,且您已经阅读了上面提到的 基于角色的访问控制和特权 参考教程。
目录

-
委派管理任务

-
向用户授予根特权

-
结束语

委派管理任务
我们假定用户 jmoekamp 想通过网络文件系统(Network File  System,NFS)与其他系统定期共享和取消共享目录。普通用户特权不允许您实现这种操作,如下所示:

            $ /usr/sbin/share /export/home/jmoekamp
Could not share: /export/home/jmoekamp: no permission           

但是,您可以使用 jmoekamp 共享权限添加一个配置文件。执行以下操作:

  1. 使用 share 命令在 exec_attr 文件中查找匹配的配置文件。在此给出了该命令和在  File System Management 中显示为匹配文件的输出:

                    $ grep "share" /etc/security/exec_attr
    File System Management:suser:cmd:::/usr/sbin/dfshares:euid=0
    File System Management:suser:cmd:::/usr/sbin/share:uid=0;gid=root
    File System Management:suser:cmd:::/usr/sbin/shareall:uid=0;gid=root
    File System Management:suser:cmd:::/usr/sbin/sharemgr:uid=0;gid=root
    File System Management:suser:cmd:::/usr/sbin/unshare:uid=0;gid=root
    File System Management:suser:cmd:::/usr/sbin/unshareall:uid=0;gid=root
    [...]              

  2. 切换为超级用户并将 File System Management 权限配置文件分配给  jmoekamp。在此给出了这些命令和由此生成的输出:

                    $ su root
    口令:
    # usermod -P'File System Management' jmoekamp
    UX: usermod: jmoekamp is currently logged in, some changes may not take
    effect until next login.              

  3. 让 jmoekamp 注销后重新登录。
        瞧!他现在可以在没有成为超级用户的情况下通过在共享命令前附加 pfexec  来共享和取消共享目录了:

                    $ pfexec /usr/sbin/share /export/home/jmoekamp
    $ /usr/sbin/share
    - /export/home/jmoekamp rw ""              


向用户授予根特权
OpenSolaris 操作系统中的 Primary Administrator  配置文件可以向用户授予根特权。也就是,分得该配置文件的用户可以作为超级用户在没有登录的情况下执行根命令。在 exec_attr  文件中查看配置文件的入口点。

            # cat /etc/security/exec_attr | grep "Primary"
Primary Administrator:suser:cmd:::*:uid=0;gid=0           

这意味着所有使用带有 pfexec 前置的配置文件而执行的命令使用 uid=0 和  gid=0 来运行,因此这样的用户具有根特权。
通过 Primary Administrator 权限配置文件向用户授予根特权有几个优点:

  • 您不必向用户透露超级用户口令。
  • 要撤消用户的根特权,只需简单地从用户设置中删除 Primary Administrator  配置文件—无需设置新的超级用户口令。
  • 具有 Primary Administrator 权限配置文件的用户可以设置一个根 shell,随后不需使用  pfexec 前置根命令。
请参见本示例:
  1. 以超级用户的身份将 Primary Administrator 配置文件分配给  jmoekamp。在此给出了这些命令和由此生成的输出:

                    # usermod -P'Primary Administrator' jmoekamp
    UX: usermod: jmoekamp is currently logged in, some changes may not take
    effect until next login.              

  2. 由于是测试,要求 jmoekamp 注销再登录,并执行 id -a 命令两次:一次在没有前置  pfexec 的情况下执行,一次在前置了 pfexec 的情况下执行。注意输出内容 :

                    $ id -a
    uid=100(jmoekamp) gid=1(other) groups=1(other)
    $ pfexec id -a
    uid=0(root) gid=0(root) groups=1(other)              

        在没有前置  pfexec 的情况下,jmoekamp 的 uid 和  gid 值分别是 jmoekamp 和其他用户(也就是非超级用户)的 uid 和  gid 值。在前置了 pfexec 的情况下,uid 和  gid 假定是 root 的值。
        为了避免反复键入 pfexec,jmoekamp  可以在其系统上设置 Bash shell,如下所示:

                    $ pfexec bash
    bash-3.2# id
    uid=0(root) gid=0(root)              

  3. 要删除配置文件,请以超级用户的身份和类型登录:

                    # usermod -P '' jmoekamp
    #              

        然后,当在  pfexec 的控制下执行时,uid 和 gid 恢复到用户的标准值,如  id -a 命令的输出结果所示。在没有分配配置文件的情况下,pfexec  不生成给予用户的额外特权:

                    $ pfexec id -a
    uid=100(jmoekamp) gid=1(other) groups=1(other)              


结束语
再次重申,无密码 pfexec 是 Linux 中 sudo 的 OpenSolaris 版本。通过  Primary Administrator 配置文件来分配和调用根特权的做法相当简单且直接了当。此外,您还可以使用  audit 命令来记录 pfexec 的执行日志,从而监测用户的操作。
在默认情况下,当安装 OpenSolaris 2008.05  这一最新版本的操作系统时,您所创建的用户帐户即使不能以超级用户的身份直接登录,也会被自动分配 Primary  Administrator 权限配置文件。因此,用户可以使用根特权运行  pfexec,这对所有用户都是一个极大的方便。
阅读(936) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~