传统的UNIX中,root具有几乎无穷的权力,而一般用户却经常受到这样那样的限制。通常解决这个问题的办法包括su、sudo、wheel组、ACL等,而Solaris采用了基于角色的访问控制(RBAC)和Privileges的方法。下面将用实例解释这两种权限控制方法。
RBAC实例:
在Solaris中,普通用户是不具有关机的权限的,我们可以通过RBAC来下放权限给某些用户。
首先,我们需要创建一个普通用户(如果系统中已经有普通用户可以忽略这一步):
# useradd -m -d /export/home/baseuser baseuser
# passwd baseuser
New Password:
Re-enter new Password:
passwd: password successfully changed for baseuser
# grep baseuser /etc/passwd
baseuser:x:5007:1::/export/home/baseuser:/bin/sh
其次,我们需要创建一个角色用户:
# roleadd -m -d /export/home/shutdown shutdown
# passwd shutdown
New Password:
Re-enter new Password:
passwd: password successfully changed for shutdown
# grep shutdown /etc/passwd
shutdown:x:5008:1::/export/home/shutdown:/bin/pfsh
应该注意的是角色用户的shell是/bin/pfsh,该帐号是不能直接登录的,需要通过su命令才能切换到该用户。其他可以使用的shell包括:/bin/pfcsh,/bin/pfksh等。
现在,我们要定义一个profile:
# echo "System Shutdown:::profile to shutdown:" >> /etc/security/prof_attr
给profile设置执行特殊命令的权限:
# echo "System Shutdown:suser:cmd:::/usr/sbin/shutdown:uid=0" >> /etc/security/exec_attr
然后,将profile赋予给角色shutdown,再将角色shutdown赋予给用户baseuser(当然如果预先设置好prof_attr和exec_attr,可以在创建角色和用户时分别赋予属性):
# rolemod -P "System Shutdown" shutdown
# usermod -R shutdown baseuser
# grep shutdown /etc/user_attr
shutdown::::type=role;profiles=System Shutdown
baseuser::::type=normal;roles=shutdown
完成!现在我们可以用baseuser用户登录,然后su到shutdown角色去重启机器。
实际上,与RBAC(即角色管理控制)相关的有五个文件,分别是:
/etc/user_attr 用户属性文件
/etc/security/prof_attr 角色属性文件
/etc/security/auth_attr 授权属性文件
/etc/security/exec_attr 执行属性文件
/etc/security/policy.conf 默认授权属性文件
系统默认已经设置了很多可以使用的profile,我们只需找到适用的profile,添加角色和将角色赋予给用户就可以了。对以上文件更详细的解释请阅读相关手册。
Privileges实例:
与RBAC不同的是,RBAC在用户层工作,与UID和权限有关;而Privileges工作在核心层,UID和权限将被忽略。例如,如果一个普通用户的进程得到读任何文件的privilege,该进程就可以读本来只有root用户才能访问的文件。
查看权限列表
#ppriv -l -v
查看当前用户进程的权限
$ ppriv $
阅读(1478) | 评论(1) | 转发(0) |