如何限制对Docker容器中路径的访问?

2023-12-12

Here我编写了一个 Dockerfile 用于测试用户访问。另一个文件(run.sh)在此link

到目前为止,我已经这样做了:

  1. 从 Ubuntu 12.04.05 开始,使用 sudo 和 ssh 服务器创建一个新容器。
  2. 将默认 root 密码更改为“root”
  3. 创建一个测试目录“/app”,并在其中创建一个名为“lalal”的文件,其中包含示例字符串。
  4. 创建用户“devops”并为其添加 sudo 功能以启动 ssh 服务。
  5. 配置 run.sh 脚本以在启动时启动 ssh 服务,并将默认用户更改为“devops”。

使用docker进行操作:

  • 构建: docker build testuser/testuser:v1 -f ./Dockerfile 。
  • 运行: docker run -d -P --name testuser -p 22:22 testuser/testuser:v1
  • 查看日志: docker logs testuser
  • 运行 bash: docker exec -i -t bash
  • 使用 root 用户运行 bash: docker exec -i -t -user=root bash

由于 /app 目录的限制,在使用 devops 用户运行 bash 之前没有问题,但是当我使用 root 用户运行 bash 时,我可以做任何我想做的事情,而 devops 用户是无用的。我该如何修复这个安全漏洞?


正如中提到的问题 8664:

如果有人可以访问 Docker,他们就可以访问您的整个系统,可以加入命名空间等。
禁用docker exec根本不会增强安全性。

如果你能跑docker exec,您可以在任何正在运行的容器中以 root 身份运行它。这不是错误或安全风险。这是一个特点。

From 问题 8798:

I think exec对于调试容器最有用,因此有必要能够执行为root.

The 奥古斯丁·阿尔巴·奇卡尔确认(在评论中) with 问题 18640
(布莱恩·高夫——cpuguy83的回答)

No.
按照惯例,任何有权访问 docker 的用户都拥有对主机的完全 root 访问权限,这使得对容器的 root 访问权限变得毫无意义。

Docker现在在master中有一个授权框架,可以用来限制这种访问。它将在 Docker 1.10 中提供.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制对Docker容器中路径的访问? 的相关文章

  • Spring Boot 和 Kafka,Producer 抛出 key='null' 异常

    我正在尝试使用Spring Boot with Kafka and ZooKeeper with Docker docker compose yml version 2 services zookeeper image wurstmeist
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • 如何让 Docker 容器在系统启动时自动启动?

    假设我有一个要运行的 Docker 容器 那么我可以调用 docker run 一切都很好 是否有一种内置方法可以在系统崩溃并重新启动时自动重新启动容器来运行容器 如果是这样 这在 Docker Compose 中也可用吗 是的 docke
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • “./somescript.sh”和“. ./somescript.sh”有什么区别

    今天我按照一些说明在 Linux 中安装软件 有一个需要首先运行的脚本 它设置一些环境变量 指令告诉我执行 setup sh 但是我执行时犯了一个错误 setup sh 所以环境没有设置 最后我注意到了这一点并继续进行 我想知道这两种调用脚
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • 如何为 Python 2 安装 pip

    I run python version and get Python 2 7 3 I run pip version and get pip 1 5 from usr local lib python3 2 dist packages p
  • 早于 0.4.12 的 Node.js 无法在 AWS EC2 上正常工作。为什么?

    我无法在 AWS EC2 Ubuntu 或 CentOs 没关系 上安装 node js v0 6 1 安装后我输入node 处理器负载达到100 但 v0 4 12 工作正常 可能只有我有这个问题 那不好意思了 请告诉我我做错了什么 提前
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • 我如何在 docker 构建过程中传递参数或绕过它? [复制]

    这个问题在这里已经有答案了 我为我的 PHP 应用程序编写了一个 Dockerfile 我不是从 dockerhub 开始创建它 而是从头开始创建它 eg FROM ubuntu 18 04 RUN apt get update apt g
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • X 服务器使用什么像素格式?

    X 服务器使用什么像素格式 RGBA ARBG BGRA 如果有任何特定格式的话 Update 我专门寻找有关颜色分量顺序和位模式的信息 你的意思是帧缓冲区格式 或者所有支持的像素图格式 无论是哪一种 都取决于您的图形硬件 驱动程序和配置
  • 容器内的 Docker Macvlan 网络无法到达其自己的主机

    我在 2 个 docker 主机之间设置了 Macvlan 网络 如下所示 主机设置 HOST 1ens192 172 18 0 21 创建macvlan桥接口 docker network create d macvlan subnet
  • 在哪里可以找到所有 C 标准库的源代码?

    我正在寻找所有 C 标准库的完整源代码 也就是说 我正在寻找 stdio h stdlib h string h math h 等的源代码 我想看看它们是如何创建的 我认为这取决于不同的平台 但 Linux 或 Windows 都会受到欢迎
  • 在 Dockerfile 中切换到 root 用户

    我运行了这个命令 docker pull mcr microsoft com mssql server 2019 latest 然后我创建了一个 dockerfile 来使用此容器映像作为另一个容器的基础映像 escape FROM mcr
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或

随机推荐

  • GitLab CI 的 Docker 构建作业参数无效

    所以我正在尝试设置我的 Gitlab CI 来触发一个作业git push构建和部署我的 Docker 这是 gitlab ci yml我正在使用的文件基于 Gitlab 文档 Elixir yml 中的示例 stages build bu
  • 获取有关 WCF 中需要很长时间的方法的进度信息的有效模式?

    我想要获取有关 WCF 上调用的方法的进度更新 例如 我运行 1000 个查询并想知道当前状态 如果双工合约在您的环境中不可行 您将不得不诉诸轮询 您的初始方法可以返回一个标识符 可能是 GUID 然后您可以对另一个方法进行后续调用以检查进
  • 如何在Mac上运行shell命令?

    如何使用 Excel VBA 代码运行 shell 命令 我想跑chmod x Users asdasd Music playlistLoad sh穿过外壳 我使用 Python 实现了这一点os system Command here 在
  • 如何在 C# 中进行参数化 SELECT 查询?

    我正在尝试使用 DataGridView 以及 C 和 SQL Server 中的参数化查询来显示数据库中表中的数据 到目前为止 我已经尝试过这段代码 private void button1 Click object sender Eve
  • 复杂对象图的快速哈希码

    我有一个漂亮的复杂的物体我需要得到独特性这些物体 一种解决方案可以通过重写来完成GetHashCode 我已经实现了如下代码 public override int GetHashCode return this complexObject
  • 使用 System.IO.Compression.FileSystem 将完整目录添加到现有 zip 文件

    以下示例可在互联网和本网站上追溯 作为使用 NET Framework 4 5 压缩文件的解决方案 它可以工作 但是当存档已经存在时 它会给出错误 因为它似乎只能压缩文件夹并创建新的 zip 文件 Reflection Assembly L
  • Apache Commons Validator 帮助下的 NoClassDefFoundError 问题

    如果使用 Apache Commons Validator 会出现错误 java lang NoClassDefFoundError org apache oro text perl Perl5Util 即使 Apache Commons
  • 如何在 RestAssured 中设置 OAuth 领域

    我正在使用 RestAssured 库来自动化 NetSuite Restlet 此 Restlet 使用 OAuth 1 0 进行身份验证 除了消费者密钥 消费者秘密 访问令牌和令牌秘密之外 我还需要设置 REALM 等高级字段 但我找不
  • 构造一个没有默认构造函数的空对象

    假设我有一个类型F 我知道F是空的 但是F没有默认构造函数 所以我不能使用F 来构建它 有没有办法获得类型的有效对象F反正 我似乎记得有人提到过有一种神秘的联合用法 理想情况下 它会是constexpr友好的 这可能很有用 因为无捕获 la
  • Android - listView 中的单选按钮?

    我有一个场景 我们应该在列表视图中有一个单选模式单选按钮 当我单击单选按钮时 它应该进入启用状态 当我单击整个项目时 它应该重定向到新活动 我参考了下面的链接 link1 link2 我可以找到多项选择模式的方法 但不适用于单选模式 对此有
  • nVIDIA 驱动程序如何将设备索引分配给 GPU?

    假设在单个节点上 有多个具有不同计算能力的设备 nvidia如何对它们进行排名 我的排名是指cudaSetDevice分配的数字 有关于此的一般准则吗 谢谢 我相信对应的设备顺序cuda获取设备 and cudaSetDevice 即 CU
  • 在 QML TableView 中单击时编辑数据(如 Excel)

    我有一些代码 import QtQuick 2 2 import QtQuick Window 2 1 import QtQuick Controls 1 2 Window visible true width 538 height 360
  • 无法在 AppService 中使用 Active Directory 集成身份验证连接到 Azure SQL Server

    我们在 Azure 应用服务上部署了 Web 应用程序 我们的数据库也在 Azure 上 配置为使用 AAD 身份验证 我们已分配 AAD 管理员 我们在 Web 应用程序中使用下面的连接字符串来使用下面的连接字符串连接到该服务器和数据库
  • 在 Spring Boot 中将 Angular 环境变量传递给已编译的静态 Angular 文件

    我现在使用 Angular 和 Spring Boot 来构建网站项目 当我们部署时 我们将ng build output path spring boot project src main resources static Angular
  • 如何通过 sudo 运行命令并通过 ssh 输入密码 C#

    我想在具有 Linux 操作系统的远程计算机上运行命令并获取结果 我正在使用 ssh net 库通过 C 代码进行连接 我可以连接并运行一些不需要使用的命令 sudo 前 但我不知道如何运行需要 sudo 运行的命令 因为运行后 例如 su
  • 同时运行不同的表单

    我试图同时显示 2 个不同的表单 我尝试了以下代码 但它不起作用 Form1 t1 new Form1 Form2 t2 new Form2 t2 Show t1 Show Application Run 我还尝试从program cs运行
  • 如何验证文本字段,使其只能包含四位数

    我已经设法验证我的字段 因此它始终是四位数字 但我需要验证它始终是一个数字 我尝试添加这段代码 但它无法正常工作 if document ExamEntry cand value match numbers msg Only use num
  • 人类生成的数字和软件生成的数字哪个更随机?

    Does it 抛硬币获得随机位 Or 掷骰子获得 1 到 6 之间的随机整数 Or 从洗好的牌堆中取出一张牌获取 1 到 52 之间的数字 或者它能像我们一样思考或拥有像我们一样的智慧吗 显然 上面的例子不能成为生成随机数据的方法 那么软
  • 并排放置直方图

    我想在 gnuplot 中对类似于此图像的直方图 rowstacked 进行分组 我有这两个文件 其中直方图的数据来自 Round robin Input West Virginia ChicagoI ChicagoII Californi
  • 如何限制对Docker容器中路径的访问?

    Here我编写了一个 Dockerfile 用于测试用户访问 另一个文件 run sh 在此link 到目前为止 我已经这样做了 从 Ubuntu 12 04 05 开始 使用 sudo 和 ssh 服务器创建一个新容器 将默认 root