Nova执行命令的原理
来源:互联网 发布:江苏域名备案 编辑:程序博客网 时间:2024/05/16 09:56
要让Nova在计算节点上执行一些需要root权限的命令,其原理是这样的:
首先基于sudo的原理,因为openstack-nova-compute服务是属于nova用户和nova组的,它们本身不具有root权限,因此需要sudo;
但是sudo去执行的是这样的一个命令”/usr/bin/nova-rootwrap /etc/nova/rootwrap.conf”,于是 /etc/sudoers 中需要有以下这一行(一般来说,这一行在安装了Nova之后都是有的):
nova ALL = (root) NOPASSWD: /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf
因此想让Nova执行的命令,其实是作为上述命令的参数,比如要执行 systemctl restart sshd ,真正运行的应该是:
sudo /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf systemctl restart sshd
也就是说,在修改Nova代码的时候,写的就类似是:
os.system("sudo /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf systemctl restart sshd")
为何需要这样一个命令加上一个conf文件呢?其道理也很简单:在 /etc/nova/rootwrap.conf 中定义了一个path,即 /usr/share/nova/rootwrap/compute.filters 文件,而该文件给出了可以以root权限执行的命令。于是不在这个列表中的命令将不会被执行了。
compute.filters 的示例如下:
[Filter]# zram feature modprobe: CommandFilter, modprobe, rootmkswap: CommandFilter, mkswap, rootswapon: CommandFilter, swapon, rootswapoff: CommandFilter, swapoff, root
参考文献:
https://wiki.openstack.org/wiki/Rootwrap
1 0
- Nova执行命令的原理
- 通过nova.utils.execute 执行shell命令
- nova命令
- nova list命令的代码流程分析
- nova service执行流程
- [nova]nova api执行过程分析
- novaclient代码解析之---通过nova show <server-id>命令解析Nova client与Nova API之间的调用关系
- 使用echo $? 查看命令成功执行的原理
- openstack nova 命令大全
- Nova client源码分析---nova list命令
- Nova启动虚拟机执行过程
- 详解openstack命令启动实现流程及原理(nova --debug image-list)
- struts2的执行原理
- spring的执行原理
- 程序执行的原理
- winform的执行原理
- spring的执行原理
- Python的执行原理
- JAVA常用API小知识
- windows关闭端口
- 做一下注册和登陆跳转界面
- [PAT-乙级]1027.打印沙漏
- 2017华东师范大学网赛-铁路修复计划
- Nova执行命令的原理
- ubuntu16.04 启动就进入命令行模式
- android系统镜像裁剪定制---实战篇
- 51nod 1202 子序列个数(基础dp)
- [PAT-乙级]1028.人口普查
- PTA教辅 输出全排列 (20分)
- Fire Game FZU
- C# ASP.NET 连接mysql数据库存入的中文乱码问题解决方法
- vue .eslintrc.js代码风格规范中的错误提示