首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在Openshift联机v3上执行chmod文件:不允许操作

不能在Openshift联机v3上执行chmod文件:不允许操作
EN

Stack Overflow用户
提问于 2017-09-07 08:32:48
回答 2查看 3.7K关注 0票数 5

我正在将一个Django应用程序从Openshift v2迁移到v3 (如果您不知道,RedHat将在9月30日关闭v2,参见:https://blog.openshift.com/migrate-to-v3-v2-eol/)

因此,我跟随这篇博客文章来帮助我:https://blog.openshift.com/migrating-django-applications-openshift-3/。我对新版本所基于的所有这些Docker / Kubernetes概念都很陌生。

我取得了一些进展:我成功地构建了我的应用程序。然而,它在部署时崩溃:

---> Running application from script (app.sh) ... /usr/libexec/s2i/run: line 42: /opt/app-root/src/app.sh: Permission denied

事实上,app.sh已经失去了它的x权限。我以调试身份登录失败的容器,并查看它:

代码语言:javascript
复制
> oc debug dc/<my app>
> (app-root)sh-4.2$ ls -l /opt/app-root/src/app.sh 
-rw-rw-r--. 1 default root 127 Sep  6 21:20 /opt/app-root/src/app.sh 

博客文章说:“通过运行chmod +x app.sh,确保app.sh文件是可执行的”,这是我在本地回购中所做的。不管怎么说,我想直接在吊舱里再做一次,但它不起作用:

代码语言:javascript
复制
(app-root)sh-4.2$ chmod +x /opt/app-root/src/app.sh                             
chmod: changing permissions of ‘/opt/app-root/src/app.sh’: Operation not permitted

那么,如何将x权限设置为app.sh?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-07 15:05:07

在不深入了解更多细节的情况下,任何S2I构建器映像都将乐于使用您提供的自定义run脚本以另一种方式启动应用程序。

在源代码目录中创建.s2i/bin/ (注意点),将run脚本放入其中并在OpenShift中重新构建应用程序--在部署时它将自动使用您的自定义run脚本。

这是使用OpenShift中的自定义命令启动应用程序的首选方法。

关于当前的问题,有一个非常简单的原因可以解释为什么不能更改脚本的权限:您试图修改已部署的pod中的权限,而不是构建器pod中的权限。部署的荚使用不同的UID运行,通常在100000000的范围内,并且肯定与生成生成的文件所有权不匹配。因此,许可被拒绝。

问题的根源(app.sh失去可执行权限)必须是构建过程安装这些文件的方式,实际上,查看基本映像中的/usr/libexec/s2i/assemble脚本似乎确实揭示了罪魁祸首。最后两行是:

代码语言:javascript
复制
# set permissions for any installed artifacts
fix-permissions /opt/app-root

如果您想更改构建的这一部分,而不是使用自定义的run脚本,那么我建议您在项目的源代码中创建.s2i/bin/assemble,并使其看起来类似于这样:

代码语言:javascript
复制
#!/bin/bash
echo "Running stock build:"
${STI_SCRIPTS_PATH}/assemble
echo "Fixing the mess:"
chmod 755 /opt/app-root/src/app.sh

这将修复股票构建过程对文件权限所做的任何操作,并将使用与构建的其余部分相同的UID来完成它,因此文件所有权不应该是一个问题。

票数 3
EN

Stack Overflow用户

发布于 2020-03-14 20:25:17

当我自己偶然发现这个问题时,我找到了解决这个问题的方法。您必须使您的文件app.sh可执行,并推动它在您的回购作为这样。如果git没有像对我一样跟踪此修改,则必须使用:git update-index --chmod=+x app.sh才能使其工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46091601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档