【问题标题】:mongod permission denied despite having permission尽管有权限,但 mongod 权限被拒绝
【发布时间】:2022-01-02 02:53:32
【问题描述】:

我在 GCP VM [Debian 10] 上安装了 mongodb (ver4.2)。当我检查“systemctl status mongod”时,我得到:

Nov 23 15:34:59 mongodbd4-vpc systemd[1]: Started MongoDB Database Server.
Nov 23 15:34:59 mongodbd4-vpc mongod.27017[5101]: 2021-11-23T15:34:59.751+0000 I  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
Nov 23 15:34:59 mongodbd4-vpc mongod.27017[5101]: 2021-11-23T15:34:59.759+0000 W  ASIO     [main] No TransportLayer configured during NetworkInterface startup
Nov 23 15:34:59 mongodbd4-vpc mongod.27017[5101]: 2021-11-23T15:34:59.760+0000 I  ACCESS   [main] Error reading file /db/mongodb-keyfile: Permission denied
Nov 23 15:34:59 mongodbd4-vpc systemd[1]: mongod.service: Main process exited, code=exited, status=1/FAILURE
Nov 23 15:34:59 mongodbd4-vpc systemd[1]: mongod.service: Failed with result 'exit-code'.

这是我的 ./etc/mongod.conf:

storage:
  dbPath: /db
  journal:
    enabled: true
  engine: wiredTiger
systemLog:
  destination: syslog
net:
  port: 27017
  bindIp: 0.0.0.0
  tls:
    mode: preferTLS
    certificateKeyFile: /certs/mongodb.pem
    CAFile: /certs/ca.pem
    allowConnectionsWithoutCertificates: true
security:
  keyFile: /db/mongodb-keyfile
  authorization: enabled

这是我在 /db 中的 ls -al:

drwxr--r--  2 mongodb mongodb  4096 Nov 23 15:37 journal
-rw-rw-r--  1 mongodb mongodb     5 Nov 23 15:37 mongod.lock
-r--------  1 mongodb mongodb  1004 Nov 23 15:02 mongodb-keyfile
-rw-r--r--  1 mongodb mongodb 36864 Nov 23 15:39 sizeStorer.wt
-rw-r--r--  1 mongodb mongodb   114 Nov 23 12:14 storage.bson

对于 /certs:

-rw-r--r--  1 mongodb mongodb 1338 Nov 23 12:06 ca.pem
-rw-r--r--  1 mongodb mongodb 5762 Nov 23 14:51 mongodb.pem

两个文件夹本身都有权限:

drwxr-xr-x   2 mongodb mongodb  4096 Nov 23 14:51 certs
drw-rw-r--   4 mongodb mongodb  4096 Nov 23 15:40 db

知道为什么它会因权限被拒绝而失败吗?

【问题讨论】:

  • 如何启动mongod,即哪个用户?
  • 我从 root 用户运行 'systemctl start mongod'。
  • 哪个用户运行mongod进程?查看服务文件
  • 也许将密钥文件放入dbPath 文件夹不是最聪明的方法。我更喜欢 mongodb 用户主文件夹。
  • 运行systemctl show mongod -p FragmentPath 在这个文件中你应该找到一个条目User=...,见freedesktop.org/software/systemd/man/systemd.exec.html

标签: mongodb file-permissions


【解决方案1】:

最后,问题确实是运行该进程的用户。 从非 root sudoer 运行解决了这个问题。

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 2019-06-15
    • 2011-10-19
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多