尽管有权限,但 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 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章