我有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注释一起使用?