首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改openshift容器平台中的权限?

如何更改openshift容器平台中的权限?
EN

Stack Overflow用户
提问于 2019-10-20 14:09:44
回答 4查看 13.8K关注 0票数 8

我是Openshift的新手。我在openshift中部署了一个应用程序。当我检查日志时,有些文件的权限被拒绝。现在,我想更改已经部署在Openshift中的容器的权限,但是我得到了“操作不允许”警告。我该怎么解决这个问题?

这是用于运行最新版本的MongoDB的linux。我已经尝试在我的docker文件中执行运行chmod 777 /path/to/目录,创建映像并在我的yaml文件中提取相同的映像,我正在openshift中部署该映像。但是,当我检查我的docker容器时,它会显示该目录的权限已被更改,但是当我部署时,我会在日志中得到“拒绝权限”的警告。

代码语言:javascript
复制
FROM node:10.16.3

RUN apt update && apt install -y openjdk-8-jdk

RUN useradd -ms /bin/bash admin

# Set the workdir /var/www/myapp
WORKDIR /var/www/myapp

# Copy the package.json to workdir
COPY package.json .

# Run npm install - install the npm dependencies
RUN npm install

RUN npm install sqlite3

# Copy application source
COPY . .

RUN chown -R admin:admin /var/www/myapp

RUN chmod 775 /var/www/myapp

USER admin

# Copy .env.docker to workdir/.env - use the docker env
#COPY .env.docker ./.env

# Expose application ports - (4300 - for API and 4301 - for front end)
# EXPOSE 4300 4301
EXPOSE 52000

CMD [ "npm", "start" ]

虽然,当我运行我的dockerifle时,权限已经改变了,但是当我试图在我的openshift中部署时,我被拒绝了对该目录中的一些文件的许可。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-20 14:47:21

默认情况下,在OpenShift中启动的任何容器都会获得一个随机的用户ID。因此,对于未设计用于处理此类随机UID的图像,如果出现权限错误,则会失败。

为了让您的形象发挥作用,我建议您阅读最新OpenShift文档的以下文章:https://docs.openshift.com/container-platform/4.2/openshift_images/create-images.html

在这里,与您的问题相关的简短版本:

支持任意用户入侵检测系统

默认情况下,OpenShift容器平台使用任意分配的用户ID运行容器,这提供了额外的安全性,防止进程由于容器引擎漏洞而转义容器,从而实现对主机节点的权限升级。

若要支持以任意用户身份运行的映像,映像中的进程可能写入的目录和文件应属于根组,并由该组读取/写入。要执行的文件也应该具有组执行权限。

将以下内容添加到您的Dockerfile中,将设置目录和文件权限,以允许根组中的用户在构建的映像中访问它们:

代码语言:javascript
复制
RUN chgrp -R 0 /some/directory && \
    chmod -R g=u /some/directory 

,因为容器用户总是根组的成员,容器用户可以读写这些文件。根组没有任何特殊权限(与根用户不同),因此这种安排不涉及安全问题。此外,容器中运行的进程不能监听特权端口(1024以下的端口),因为它们不是以特权用户的身份运行的。

票数 10
EN

Stack Overflow用户

发布于 2020-12-14 14:40:15

将这个添加到我的Dockerfile中是有效的:

代码语言:javascript
复制
RUN chgrp -R 0 /some/directory && \
    chmod -R g=u /some/directory 
票数 2
EN

Stack Overflow用户

发布于 2021-01-18 11:14:47

Dockerfile中的以下更改为我解决了这个问题

代码语言:javascript
复制
#Add user 
RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1001 ubuntu
#Add permissions
RUN chown -R ubuntu:root /home/ubuntu && \
    chgrp -R 0 /home/ubuntu && \
    chmod -R 775 /home/ubuntu 
##Specify the user with UID
USER 1001
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58473832

复制
相关文章

相似问题

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