首页 > 解决方案 > Docker 命名空间阻止 sqlite3 数据库访问

问题描述

我在启用命名空间的 Docker 容器中运行满嘴评论。我的网页上有大量负载,但我无法发表评论。在 Docker 日志中,我收到以下错误消息以及500开发工具控制台中的错误。

attempt to write a readonly database
[GIN] 2018/12/16 - 11:57:23 | 500 |    1.956915ms |        10.0.0.0 | POST     /v1/comments

在启用命名空间的满嘴容器内,我注意到 config.json 和数据库文件被设置为nobody 用户。

/app # ls -la /app/data
total 40
drwxr-xr-x    2 nobody   nobody        4096 Dec 15 21:48 .
drwxr-xr-x    1 root     root          4096 Aug 27 16:25 ..
-rw-r--r--    1 nobody   nobody        1460 Dec 16 11:55 config.json
-rw-r--r--    1 nobody   nobody       24576 Dec 15 21:48 mouthful.db

如果我在禁用命名空间的情况下运行满口(使用 --userns=host),满口运行正常,我可以发表评论。在禁用命名空间的容器内,文件权限设置为 root。

/app # ls -la /app/data
total 40
drwxr-xr-x    2 root     root          4096 Dec 16 12:20 .
drwxr-xr-x    1 123000   123000        4096 Aug 27 16:25 ..
-rw-r--r--    1 root     root          1460 Dec 16 12:18 config.json
-rw-r--r--    1 root     root         24576 Dec 16 12:20 mouthful.db

问题是主机上的进程也设置为root。

ps au | grep [b]in/sh
root      8420  0.5  0.0   1560   516 pts/0    Ss+  12:24   0:00 /bin/sh
我认为这是一个安全风险,因为它使某人更容易获得对主机的 root 访问权限。

那么,我怎样才能让 sqlite3 在启用 Docker 命名空间的情况下使用 Mouthful 评论呢?

标签: sqlitedockernamespaces

解决方案


推荐阅读