小编Ole*_*ova的帖子

如何使用 docker 的 --user 选项将 uid 设置安全地添加到 docker 容器的 /etc/passwd 中

问题

对于应该以非 root 身份运行的 docker 映像(基于 alpine),我有两个要求:

  1. 我必须在 docker 容器内安装 FUSE 文件系统
  2. docker 镜像的用户可以设置 docker 用户的 UID/GIDdocker run --user {uid}:{gid}

FUSE 的fusermount命令需要用户在 中输入有效的条目/etc/passwd,否则它不会挂载文件系统。鉴于我在构建时不知道用户的 UID/GID,我无法adduser在构建时调用。我也无法在运行时执行此操作,因为用户没有适当的权限。

找到解决方案

到目前为止,我发现了两种感觉不合适/不安全的解决方案

1. 使/etc/passwd可写

当添加chmod 555 /etc/passwd到 Dockerfile 时,我可以在运行时执行

echo "someuser:x:${my_uid}:$(id -g)::/tmp:/sbin/nologin" >> /etc/passwd
Run Code Online (Sandbox Code Playgroud)

这完成了定影安装的工作。不幸的是,我没有找到一种方法可以在运行时将 passwd 文件更改回只读状态,如果没有这种方法,我就会担心有人可能会滥用它来重新获得 root 权限。虽然我找不到一种简单的方法来使用打开的 passwd 文件进行某些攻击(虽然我能够直接在 /etc/passwd 中为所有用户添加/修改密码和配置,然后通过 更改用户login,但 alpine 不允许这样做用户 root (既不是 vialogin也不是 via su)。但我想有人比我更聪明,不知何故整个解决方案感觉像是一个相当肮脏的黑客。有没有人有具体的想法如何使用容器内的可写 passwd 文件在容器内获得不适当的权限?

2. 将要求 #2 替换为两个附加环境变量

通过引入 DUID 和 DGID 作为环境变量并将 …

fuse docker dockerfile

8
推荐指数
0
解决办法
2371
查看次数

Docker远程API过滤器:按名称过滤网络

我正在尝试获取Docker网络列表并使用Docker HTTP API 1.24按名称对其进行过滤。

出于某种原因,过滤器的文档非常差,整个Docker文档中的唯一示例就是这个示例(并且可以正常工作):

GET /networks?filters={"type":{"custom":true}} HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

令人困惑的是,这个孤独的示例似乎与过滤器的官方Docker符号相矛盾:

map[string][]string

在这里讨论:https : //stackoverflow.com/a/28055631/4486909

API规范也没有太大帮助:

Query parameters:
  filters - JSON encoded network list filter. The filter value is one of:
  driver=<driver-name> Matches a network’s driver.
  id=<network-id> Matches all or part of a network id.
  label=<key> or label=<key>=<value> of a network label.
  name=<network-name> Matches all or part of a network name.
  type=["custom"|"builtin"] Filters networks by type.
Run Code Online (Sandbox Code Playgroud)

http://docs.master.dockerproject.org/engine/reference/api/docker_remote_api_v1.24/#/list-networks


这些不过滤任何内容,返回netwroks的完整列表。

curl -vg -X GET "v1.24/networks" --data-urlencode 'filters={"name":["MyNetwork"]}'

curl -vg -X GET "v1.24/networks" --data-urlencode …
Run Code Online (Sandbox Code Playgroud)

docker

3
推荐指数
2
解决办法
1219
查看次数

标签 统计

docker ×2

dockerfile ×1

fuse ×1