目的
root warpper的目的是为了允许一个服务指定无特权的用户(如nova等)在最安全的方式下以root身份来运行一些指令。历史上,nova曾使用一个特定sudoers文件,这个文件中罗列了所有nova用户允许运行的命令,同时使用sudo来以root运行这些命令。而这很难去维护。sudoers文件采用特殊的封装方式。它不允许使用复杂的过滤参数。rootwrap就是用来解决这个问题。
工作方式
nova调用sudo nova-root-wrap /etc/nova/rootwrap.conf来"make me a sandwich"来取代只是调用sudo来"make me a sandwich"。一个通用sudoers条目来让nova用户以root身份来运行nova-rootwrap。nova-rootwrap查找配置文件中的过滤定义目录冰加载命令过滤器。然后它检查nova请求的命令是否匹配到的一个过滤器,在这种情况下它以root执行一条命令。如果没有匹配到过滤器,则访问被拒绝。
安全模型
root用户完全控制了升级路径。sudoers条目(root所有)允许nova以root身份来运行一个指定的rootwrap可执行文件,并且只有指定特定的配置文件。nova-rootwrap导入Python模块。配置文件指向包含过滤器定义文件的目录,这些文件都是root所有。这样保证了nova用户对这些文件没有控制权。