尝试以非 root 用户身份从容器内部写入已安装卷时出现问题

2024-04-09

我正在使用一个将运行 ZooKeeper 的容器,但我在安装到容器中的主机卷上遇到了权限问题。

这是我的设置:

在主机上(Ubuntu 14.04):

  • 创建了“zookeeper”系统用户(id=106)和组(id=111)。
  • 创建目录“/var/log/zookeeper”并将其所有权设置为zookeeper(即chownzookeeper:zookeeper)。这是我将安装到容器中的目录。

容器内部(Ubuntu 14.04):

  • 还创建了一个“zookeeper”系统用户(id=102)和组(id=105),我将其用作在 ENTRYPOINT 中执行命令的用户。
  • 创建将安装到的相同目录“/var/log/zookeeper”,并将其所有权设置为zookeeper:zookeeper(尽管我认为这并不重要)。

一旦我使用 /var/log/zookeeper 挂载启动容器,并以 Zookeeper 用户(在容器内创建)的身份打开容器内部的 shell,我发现如果出现“权限被拒绝”错误,我尝试在挂载目录/var/log/zookeeper 中创建一个文件。当我执行“ls -l”来查看此目录的所有权(仍在容器内)时,它看起来像这样:

drwxr-xr-x 2  106  111   4096 Jun 30 17:18 zookeeper

本例中的 106 和 111 对应于主机的 Zookeeper 用户和组 ID,我认为这就是问题所在。我尝试在容器内打开一个 shell,但这次我以 root 用户身份进入,并且我上面描述的场景工作得很好,只是 root 是创建的文件的所有者(这是预期的)。

由此我得出的结论是我需要:

(a)作为默认 root 用户而不是我创建的 Zookeeper 用户在我的容器内运行应用程序。

(b)在我的主机和容器内创建一个 Zookeeper 用户和组,其 id 完全相同。

这两种情况都不是理想的,因为(a),以 root 用户身份运行应用程序可能会存在潜在的安全问题(根据我所读到的内容),并且(b),要使 id 匹配可能非常困难,因为它们可能已被创建的其他用户占用(您对此没有任何控制权)。

以前有人处理过类似的事情吗?还有其他可能被我忽略的解决方案吗?


据我所知,容器内和主机上的用户 ID 和组 ID 应该匹配,以便让主机授予您对共享目录的权限。

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

尝试以非 root 用户身份从容器内部写入已安装卷时出现问题 的相关文章

随机推荐

  • 如何让 Rosenbrock23 在 ParameterizedFunctions.jl DSL 中使用 ODE?

    进一步这个问题 https stackoverflow com questions 54422068 how to fix typeerror in setindex in differentialequations jl 54423008
  • 从 CodeAttribute 内的参数获取 CodeClass?

    我正在研究一些 T4 代码生成 为此我需要在 BarAttribute 构造函数内传递的类型的 CodeClass class Baz class Bar Attribute public Bar Type type Bar typeof
  • Python pandas 检查数据框是否不为空

    我有一个if语句 它检查数据框是否不为空 我的做法如下 if dataframe empty pass else do something 但我确实需要 if dataframe is not empty do something 我的问题
  • 创建“集合字典”

    我需要将数据有效地存储在类似于 集合字典 的东西中 例如有一个字典 其中包含与每个唯一键匹配的多个 唯一 值 我的数据源是一个 不是很好 结构化的 XML 我的想法是 我将浏览许多元素并找到关键 如果key不存在 则将其添加到字典中 如果已
  • 如何在宏 gcc 中添加警告禁用编译指示

    我需要禁用以下代码中宏 LOG W 内部产生的警告 为此 我将此宏包装在另一个宏 LOG W 中 并禁用了其中的警告 Wold style cast 然后在代码中我使用 LOG W 代替 但是我仍然收到警告并且无法找出原因 任何指示表示赞赏
  • Netty 和字节顺序

    由于文档不完善并且缺乏 Netty 经验 我遇到了一些问题 我不知道如何设置默认的 ByteOrder 我需要一个小尾数法默认设置 如果有人能给我一些关于这方面的提示 我会很高兴 你可以使用Bootstrap setOption 去做这个
  • 为什么使用 Schema.org 微数据来标记网页元素?

    我明白为什么以及如何使用Schema org http schema org 将微数据添加到您的网站 这不是一个问题 问题是为什么 Schema org 支持某些可以用简单 HTML5 标记的内容 其中包括 Types WebPage ht
  • 使用 JavaScript 变量作为函数名?

    我在 Javascript 中有以下代码 jQuery document ready function var actions new Object var actions actions 0 create actions 1 update
  • 如何打开嵌入的资源word文档?

    我的项目中有一个嵌入的 Word 模板文档 我将其添加为资源 Resources resx gt 添加资源 gt 添加现有文件 现在我想打开它 如下所示 Microsoft Office Interop Word Application a
  • 如何使用 JavaScript 源地图(.map 文件)?

    最近我看到文件带有 js map一些 JavaScript 库附带的扩展 例如Angular http code angularjs org 这在我脑海中提出了几个问题 它是做什么用的 为什么 Angular 的人要关心交付一个 js ma
  • 尝试执行 axis2 服务客户端时出现异常

    我正在尝试创建一个示例 axis2 ServiceClient 它抛出以下错误 org apache axiom om OMException No meta factory found for feature default this u
  • 使用故事板时从 UITabbarController 添加/删除或显示/隐藏选项卡栏项目

    我有一个应用程序需要显示不同的内容UITabBarController基于用户是否注册 有没有办法添加和删除ViewControllers 来自 aUITabBarController在运行时 显示和隐藏也很好 在故事板之前你可以打电话se
  • sudo bang bang 到底是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 sudo bang bang 的目的是什么 sudo 什么时候可能需要使用它 砰砰砰 命令是一个快捷方式重复您在终端中输入的上一个命令 当您忘记需要管
  • 无法直接从浏览器访问 Angular 组件

    我有一个使用 Angular 1 5 组件的小型 Web 应用程序 当我启动服务器时 浏览器将我重定向到http 127 0 0 1 50001 欢迎 http 127 0 0 1 50001 welcome 这是预期的 并且欢迎页面出现
  • Python断言风格

    我想知道我所做的是否是一种适当的断言方法 我正在尝试为 Python 的风格指南制作一些既简洁又非常正确的东西 try assert self port number 0 assert self handle None assert isi
  • viewDidLoad() 中的 tableView 数据源为空 - Swift

    下面是我的 ViewController 代码 GetRequest 中的 println 打印从 HTTP GET 请求接收到的正确数据 此时tableData有10个键值对 但是 如果我在 viewDidLoad 中调用 GetRequ
  • “集合已修改...”问题

    我有一个函数可以检查对象列表以查看它们是否已被单击并相应地触发 OnClick 事件 我相信该功能工作正常 但我遇到了问题 当我挂接到其中一个 OnClick 事件并删除该元素并将其插入到列表中的不同位置 该程序的典型功能 时 我收到 集合
  • 从 Hudson 获取 Eclipse PDT 每晚构建

    我一直在寻找 PDT 的最新夜间版本 但是官方下载网站 http www eclipse org epp download php仅截至 2010 年 9 月为止 经过一番搜索后 我被引导到他们CVS 仪表板 https hudson ec
  • 使用 Boost.Asio 时确保有效对象寿命的最佳方法是什么?

    最近经常使用 Boost Asio 我非常喜欢这个库 因为它提供了一种从当今的多核系统中榨取性能的绝佳方法 我曾多次问过自己这个问题 我认为在使用 Asio 进行异步调用时值得抛出关于对象生命周期 所有权的问题 我反复遇到的问题是 您经常必
  • 尝试以非 root 用户身份从容器内部写入已安装卷时出现问题

    我正在使用一个将运行 ZooKeeper 的容器 但我在安装到容器中的主机卷上遇到了权限问题 这是我的设置 在主机上 Ubuntu 14 04 创建了 zookeeper 系统用户 id 106 和组 id 111 创建目录 var log