Docker名称空间阻止sqlite3数据库访问

时间:2019-01-10 13:04:27

标签: sqlite docker namespaces

我有mouthful条注释在启用了名称空间的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和数据库文件被设置为无人用户。

/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
我认为这是安全隐患,因为它使某人更容易获得对主机的根访问权限。

那么,如何在启用了Docker名称空间的情况下使sqlite3与Mouthful注释一起使用?

0 个答案:

没有答案