SELinux 阻止 mongod 搜索访问

SELinux 阻止 mongod 搜索访问

我注意到在为 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-7RHEL9和@kwodzicki 一样,我不想修改 SELinux 来创建新策略等,因为我的 DEV 环境不需要 MongoDB 访问 NFS 或检索统计信息,因为 FTDC 是针对我的。

阅读@hq分享的文档后:全时诊断数据采集 (FTDC)我解决了这个问题。为了以防万一,只需将下几行添加到/etc/mongod.conf

setParameter:
  diagnosticDataCollectionEnabled: false

然后重新启动MongoDB:

# systemctl restart mongod

答案2

在 RedHat 上安装 MongoDB

当前的 SELinux 策略不允许 MongoDB 进程访问/sys/fs/cgroup,这是确定系统上可用内存所必需的。

当前的 SELinux 策略不允许 MongoDB 进程打开和读取/proc/net/netstat,而这是全时诊断数据采集 (FTDC)

相关内容