Bomi
分类: 系统运维
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 共享权限添加一个配置文件。执行以下操作:
$ 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
[...]
$ su root
口令:
# usermod -P'File System Management' jmoekamp
UX: usermod: jmoekamp is currently logged in, some changes may not take
effect until next login.
$ pfexec /usr/sbin/share /export/home/jmoekamp
$ /usr/sbin/share
- /export/home/jmoekamp rw ""
# cat /etc/security/exec_attr | grep "Primary"
Primary Administrator:suser:cmd:::*:uid=0;gid=0
这意味着所有使用带有 pfexec 前置的配置文件而执行的命令使用 uid=0 和 gid=0 来运行,因此这样的用户具有根特权。
通过 Primary Administrator 权限配置文件向用户授予根特权有几个优点:
# usermod -P'Primary Administrator' jmoekamp
UX: usermod: jmoekamp is currently logged in, some changes may not take
effect until next login.
$ 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)
# usermod -P '' jmoekamp
#
然后,当在 pfexec 的控制下执行时,uid 和 gid 恢复到用户的标准值,如 id -a 命令的输出结果所示。在没有分配配置文件的情况下,pfexec 不生成给予用户的额外特权:
$ pfexec id -a
uid=100(jmoekamp) gid=1(other) groups=1(other)