在UNIX系统中,root账号具有最高权限,有时某些管理员比如网络管理员会需要root的权限,那么这时它就需要知道root的密码,su到root来执行自己要执行的命令。但这样具有很大的安全隐患,因为他在su到root下后,所获得的权限远远大于自己需要的,他可以删除数据库中的内容,可以访问其他人的目录等等。
RBAC (role based access control)可以很有效的解决这一问题,RBAC把root的权限分成非常细的碎片,这些碎片组合起来赋予 role。 然后再让用户su到role来执行所需要执行的命令。 比如说, 网络管理员这时可以su到netadmin 这个role,这一它所获得的权限就只是他执行自己命令所需要的权限,这样安全隐患就会小许多。
对于role这个概念,很好理解。它是一直特殊的用户。不可以用它登陆,但你可以通过别的用户su到role上来。role包含了特定的权限,通过su到role你就可以获得对应的权限 。
RBAC所用到的几个文件
/etc/user_attr 用户数据库
里面存储用户的信息,格式如下:
user : 保留字段 : 保留字段 : 保留字段 ; 属性
user字段是用户的名字。
属性字段是用分号分隔开的key-value对,有4个有效关键字:
type 值为normal或者role。为normal表示是一个普通用户,为role表示是一个role。 auths 值为从/etc/security/auth_attr中获取的授权列表。auths是solaris定义好的,对root权限细分之后的碎片。RBAC的本质就是把这些碎片中必要的部分赋予特定的用户,而不是一下全都赋予某个用户。 profiles profile是auths的集合。定义在/etc/security/prof_attr role 指定role列表,指定了该用户su 到哪些role
例如:
bash-2.03# tail -2 /etc/user_attr
limingwei::::type=normal;roles=role1
role1::::type=role;profile=p1
上面的内容代表limingwei是一个用户,role1是一个role。这个用户可以su到role1。 role1这个
/etc/security/prof_attr profile数据库
这个文件内容的格式为:
profname:保留字段1,保留字段2,描述,属性
profname,是profile的名字。
描述,是对该profile的描述
属性,是由分号分隔的key-value对。有两个有效关键字:
help 是帮助文件的名字,帮助文件一般都在/usr/lib/help/auths/locale/C auths auths是从/etc/security/auth_attr中得到的auths条目。代表着把这些auths集中在该profile内,将来可以通过把profile跟role绑定,让role获得这些权限。
bash-2.03# tail -2 /etc/security/prof_attr
Mirror:::Mirror:help=Mirror.html
p1:::test:auths=solaris.*
/etc/security/exec_attr 特权数据库
在了解这个文件之前要先明白特权。特权就是一些带有安全属性的可执行文件,比如说带有euid的脚本或者命令。在之前的知识中我们了解到,RBCA是:
先把root的权限分散放到/etc/security/auth_attr中。
然后把特定的auth集中赋给profile
然后把profile赋给role
其实特权跟auth差不多,你把特权跟profile关联起来,这样把profile赋予给role的时候,role也具有了这些特权。
该文件的格式
profile name:安全策略:type:保留1:保留2:id:属性
profile name就是要关联的profile
安全策略,suser solaris9, solaris solaris10
实体类型,只能是cmd
id,可执行文件的全路径
属性,跟安全策略有关。如果安全策略为solaris,那么这里可以为privs,如果安全策略为suser,那么这里可以为euid,uid,egid,gid。