尽管有权限,但 mongod 权限被拒绝

Posted

技术标签:

【中文标题】尽管有权限,但 mongod 权限被拒绝【英文标题】:mongod permission denied despite having permission 【发布时间】: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 【参考方案1】:

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

【讨论】:

以上是关于尽管有权限,但 mongod 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

尽管获得许可,但写入外部存储的权限被拒绝

成功安装后运行“mongod”命令时权限被拒绝

成功安装后运行“mongod”命令时权限被拒绝

Django Rest:为啥访问被拒绝,尽管 AccessAny 被设置为权限?

PostgreSQL 9.6 数据库上的关系权限被拒绝

java.io.FileNotFoundException(权限被拒绝)尽管 chmod 777