Chinaunix首页 | 论坛 | 博客
  • 博客访问: 473024
  • 博文数量: 58
  • 博客积分: 6047
  • 博客等级: 准将
  • 技术积分: 838
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-06 21:05
文章分类

全部博文(58)

文章存档

2009年(24)

2008年(34)

我的朋友

分类:

2008-05-26 23:41:33

传统的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 $
阅读(1427) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-08-16 12:06:40

好!