如何更改OpenShift容器平台的权限? [英] How do I change the permissions in openshift container platform?

查看:35
本文介绍了如何更改OpenShift容器平台的权限?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是OpenShift新手。 我已经在OpenShift中部署了一个应用程序。当我检查日志时,有些文件出现权限被拒绝错误。 现在,我想更改已部署在OpenShift中的容器上的权限,但我收到"不允许操作"警告。我如何修复此问题?

这是针对运行最新版本MongoDB的Linux。我已经尝试在我的docker文件中执行run chmod777/path/to/directory,创建映像并在我的YAML文件中拉出相同的映像,我正在将该文件部署到我的OpenShift中。但是,当我检查我的停靠容器时,它显示该目录的权限已更改,但是当我部署时,我在日志中收到警告"权限被拒绝"。

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中部署时,该目录中某些文件的权限被拒绝。

推荐答案

默认情况下,在OpenShift中启动的任何容器都会获得随机的用户ID。因此,不能处理此类随机UID的映像将失败,并出现权限错误。

为了让您的映像正常工作,我建议您阅读以下最新OpenShift文档中的文章:https://docs.openshift.com/container-platform/4.2/openshift_images/create-images.html

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

支持任意用户ID

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

要使映像支持作为任意用户运行,目录和 应拥有映像中的进程可能写入的文件 并可由该组读/写。待处理的文件 Executed还应具有组执行权限。

将以下内容添加到Dockerfile可设置目录和文件 允许根组中的用户在 构建镜像:

RUN chgrp -R 0 /some/directory && 
    chmod -R g=u /some/directory 
因为容器用户始终是根组的成员,所以容器用户可以读写 这些文件。根组没有任何特殊权限 (与root用户不同),因此不存在安全问题。 安排好了。此外,容器中运行的进程必须 不侦听特权端口(低于1024的端口),因为它们不是 以特权用户身份运行。

这篇关于如何更改OpenShift容器平台的权限?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆