nova-rootwrapper相关

来源:互联网 发布:老男孩linux运维pdf 编辑:程序博客网 时间:2024/05/17 09:41

http://blog.csdn.net/weiyuanke/article/details/7966012

openstack运行在普通用户身份下,但运行过程中发起相关指令时却需要管理员特权。

之前这一过程是通过sudo来实现的,通过sudoers文件的简单配置,通过sudo command1 .. 就可以使得command1命令运行在root权限下。

但是这一做法有一个缺陷:无法对权限做详细的控制,如命令的参数;


nova-rootwrapper

为了解决这一缺陷,openstack项目组设计了nova-rootwrapper工具。

发起相关命令时采用:

sudo nova-rootwrapper /etc/nova/rootwrapper.conf command1 .. 

在sudo的配置文件中,只允许openstack以root的权限运行nova-rootwrapper命令

[plain] view plaincopy
  1. nova ALL = (root) NOPASSWD: /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf *  

nova-rootwrapper会根据自己的配置文件,读取相关filter,来检查当前运行的命令command1有没有运行权限,如果没有话则拒绝执行。

通过这种方式,将对sudo的配置,转移到了对nova-rootwrapper的配置,从而灵活度、自由度都得到了增加。


nova-rootwrapper的配置文件是由一个个的filter组成的,当前定义有如下的filter classes:

CommandFilter:

最基本的一种FilterClass,只检查当前命令本身,不对命令的参数进行检查。

有两个参数:可执行命令,以什么用户身份运行该命令

配置示例如下:

[plain] view plaincopy
  1. ietadm: CommandFilter, /usr/sbin/ietadm, root  

RegExpFilter:

采用正则表达式检查命令的运行参数

ReadFileFilter:

检查命令读取的文件

[plain] view plaincopy
  1. read_initiator: ReadFileFilter, /etc/iscsi/initiatorname.iscsi  

KillFilter:

检查命令接受的信号

[plain] view plaincopy
  1. kill_radvd: KillFilter, root, /usr/sbin/radvd  

DnsmasqFilter:

dnsmasq进程相关的检查

[plain] view plaincopy
  1. dnsmasq: DnsmasqFilter, /usr/sbin/dnsmasq, root  
原创粉丝点击