sqlite - 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 评论呢?
解决方案
推荐阅读
- node.js - 如何为 gRPC 服务器实例(在 Node 中)分配随机端口号?
- python - 具有子函数及其参数作为参数的函数
- javascript - 如何创建一个接受任意对象的 setState 包装器
- swift - 为什么文本内容会拉伸?
- keras - Keras 影评情感分类器:GlobalAveragePooling1D 层的作用是什么?
- html - 如何仅将背景颜色添加到主要元素而不是:之前和:之后
- python - Python 和 PowerPoint 将 ' ' 替换
为 '_x000D_' - c# - 您可以将 Elasticsearch“q”查询字符串参数解析为 NEST 对象吗?
- firebase - Firebase 存储组件不存在
- java - 未使用 Comparator 对文件进行排序的 Java 列表