执行openstack image create报Error 13权限拒绝如何解决
MicroStack创建镜像报[Error 13] Permission denied排查解决方法
执行创建镜像命令:microstack.openstack image create --file filename.qcow2 --disk-format qcow2 "imagename"
返回[Error 13] Permission denied file path错误时,按以下顺序排查处理:
- 校验镜像文件本身的读权限
执行ls -l 你的qcow2文件完整路径查看文件权限位,确认当前执行用户、MicroStack服务用户对该文件有读权限。如果权限不足,可执行sudo chmod 644 你的qcow2文件完整路径给全局读权限,或者执行sudo chown $USER:$USER 你的qcow2文件完整路径把文件归属给当前操作用户。禁止把镜像文件放在/root目录下,该目录默认只允许root用户访问,哪怕加sudo执行命令,MicroStack的服务进程也无权读取该目录下的文件。 - 校验镜像文件所有父目录的可执行权限
读取文件需要文件所在每一级父目录都有可执行(即进入目录)权限,比如镜像存放在/home/ops/images/centos.qcow2,需要依次确认/home、/home/ops、/home/ops/images三个目录对MicroStack运行用户开放可执行权限。如果嫌目录权限排查麻烦,直接把镜像文件移动到全局可访问的/tmp目录,或者MicroStack专属数据目录/var/snap/microstack/common/下再执行创建命令,能避开绝大多数目录权限问题。 - 排查系统安全策略拦截
MicroStack默认以snap形式安装,受AppArmor规则约束,默认只能访问规则白名单内的目录,如果你把镜像存放在外接磁盘默认挂载点、家目录加密分区、其他自定义非授权路径,哪怕文件和目录权限全开,也会被拦截报权限错误。这种情况直接把镜像移动到/var/snap/microstack/common/目录下再执行命令即可,该路径默认在MicroStack的访问白名单内。
如果是RHEL/CentOS/Rocky等系发行版,先执行sudo setenforce 0临时关闭SELinux测试,若关闭后命令执行成功,说明是SELinux策略拦截,给对应文件配置正确的SELinux上下文标签即可,不要长期保持SELinux关闭状态。 - 避免相对路径导致的路径识别错误
执行命令时--file参数后尽量写镜像文件的绝对路径,不要只写文件名的相对路径,避免因为命令执行的工作目录不符合预期,触发路径访问错误。
踩坑提示:不要一上来就加sudo硬执行命令,sudo仅能切换执行用户为root,解决不了snap访问白名单限制、父目录权限不足、安全策略拦截这类问题,反而容易打乱本地文件的权限归属。
内容的提问来源于stack exchange,提问作者vinay
相关产品推荐
相关产品推荐

