我注意到在为 UniFi 控制器程序运行 mongod 时出现了一些 SELinux 错误。具体来说,我得到了:
SELinux is preventing /usr/bin/mongod from search access on the directory /.
SELinux is preventing /usr/bin/mongod from search access on the directory /var/lib/nfs
SELinux is preventing /usr/bin/mongod from search access on the directory fs
SELinux is preventing /usr/bin/mongod from search access on the directory /var/lib/snapd
我不明白为什么 mongod 需要对这些目录进行搜索访问,并且我想知道是否/如何可以禁用它尝试搜索它们,并且我认为授予它访问我的整个系统的权限并不是一个真正的解决方案。
实际的数据库已存储,它位于默认位置(下面的配置文件),并且这些目录的 SELinux 类型已正确设置,因为服务似乎确实在运行,并且没有抛出有关访问的错误/var/lib/mongo
。
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
答案1
我也遇到了同样的问题MongoDB-7在RHEL9和@kwodzicki 一样,我不想修改 SELinux 来创建新策略等,因为我的 DEV 环境不需要 MongoDB 访问 NFS 或检索统计信息,因为 FTDC 是针对我的。
阅读@hq分享的文档后:全时诊断数据采集 (FTDC)我解决了这个问题。为了以防万一,只需将下几行添加到/etc/mongod.conf
setParameter:
diagnosticDataCollectionEnabled: false
然后重新启动MongoDB:
# systemctl restart mongod
答案2
当前的 SELinux 策略不允许 MongoDB 进程访问
/sys/fs/cgroup
,这是确定系统上可用内存所必需的。
当前的 SELinux 策略不允许 MongoDB 进程打开和读取
/proc/net/netstat
,而这是全时诊断数据采集 (FTDC)。