关闭

CentOS7 SELinux阻止MongoDB启动的问题

标签: mongodbcentosselinuxlinux权限
2615人阅读 评论(1) 收藏 举报
分类:

问题描述:

在新装的CentOS7上,安装了MongoDB3.4,挂载了一个大的数据盘后,修改/etc/mongo.conf,将配置文件中的log和data目录放在新的数据盘下,并修改文件的访问权限。改完后的mongo.conf:

# 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: /data/mongodb/log/mongod.log

# Where and how to store data.
storage:
  dbPath: /data/mongodb/data
.....

文件权限:

# ls -alh
drwxr-xr-x.  5 mongod mongod 4.0K 111 14:53 mongodb

# cd mongodb
# ls -alh
drwxr-xr-x. 3 mongod mongod 4.0K 119 19:08 data
drwxr-xr-x. 2 mongod mongod 4.0K 119 19:06 log
drwxr-xr-x. 2 mongod mongod 4.0K 111 14:54 run

执行systemctl start mongod命令后,查看状态发现并没有启动,查看/var/log/message,发现以下错误

Nov  9 06:06:44 [localhost] setroubleshoot: failed to retrieve rpm info for /data/mongodb/run/mongod.pid
Nov  9 06:06:44 [localhost] setroubleshoot: SELinux is preventing /usr/bin/mongod from write access on the file /data/mongodb/run/mongod.pid. For complete SELinux messages run: sealert -l f7148e11-b126-401e-ba9f-a9a87c1e54ae
Nov  9 06:06:44 [localhost] python: SELinux is preventing /usr/bin/mongod from write access on the file /data/mongodb/run/mongod.pid.#012#012*****  Plugin restorecon (94.8 confidence) suggests   ************************#012#012If you want to fix the label. #012/data/mongodb/run/mongod.pid default label should be default_t.#012Then you can run restorecon.#012Do#012# /sbin/restorecon -v /data/mongodb/run/mongod.pid#012#012*****  Plugin catchall_labels (5.21 confidence) suggests   *******************#012#012If you want to allow mongod to have write access on the mongod.pid file#012Then you need to change the label on /data/mongodb/run/mongod.pid#012Do#012# semanage fcontext -a -t FILE_TYPE '/data/mongodb/run/mongod.pid'#012where FILE_TYPE is one of the following: afs_cache_t, initrc_tmp_t, mongod_log_t, mongod_tmp_t, mongod_var_lib_t, mongod_var_run_t, puppet_tmp_t, user_cron_spool_t.#012Then execute:#012restorecon -v '/data/mongodb/run/mongod.pid'#012#012#012*****  Plugin catchall (1.44 confidence) suggests   **************************#012#012If you believe that mongod should be allowed write access on the mongod.pid file by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c 'mongod' --raw | audit2allow -M my-mongod#012# semodule -i my-mongod.pp#012

从提示中可以看出是SELinux的防护功能,阻止了访问。

解决过程:

/var/log/message中的信息看起来比较费劲,里面有一句提示:

For complete SELinux messages run: sealert -l e73ba9e8-f74d-4835-9b53-85667546b28c

根据提示执行:

# sealert -l e73ba9e8-f74d-4835-9b53-85667546b28c
SELinux is preventing /usr/bin/mongod from write access on the directory /data/mongodb/log.

*****  Plugin catchall_labels (83.8 confidence) suggests   *******************

If you want to allow mongod to have write access on the log directory
Then 必须更改 /data/mongodb/log 中的标签
Do
# semanage fcontext -a -t FILE_TYPE '/data/mongodb/log'
其中 FILE_TYPE 为以下内容之一:mongod_log_t, mongod_tmp_t, mongod_var_lib_t, mongod_var_run_t, tmp_t, var_lib_t, var_log_t, var_run_t。
然后执行:
restorecon -v '/data/mongodb/log'


*****  Plugin catchall (17.1 confidence) suggests   **************************
......

上面提示输出中已经包含了,解决方法:

# semanage fcontext -a -t mongo_log_t '/data/mongodb/log'
# restorecon -v '/data/mongodb/log'
restorecon reset /data/mongodb/log context unconfined_u:object_r:unlabeled_t:s0->unconfined_u:object_r:mongod_log_t:s0

上面命令执行完毕后,就解决了/data/mongodb/log目录的文件权限问题。

同样的方法,再解决/data/mongodb/data和/data/mongodb/run目录的问题。

启动mongod,问题解决。

Nov  9 06:08:51 [localhost] systemd: Starting High-performance, schema-free document-oriented database...
Nov  9 06:08:51 [localhost] systemd: Started High-performance, schema-free document-oriented database.
Nov  9 06:08:51 [localhost] mongod: about to fork child process, waiting until server is ready for connections.
Nov  9 06:08:51 [localhost] mongod: forked process: 18218
Nov  9 06:08:51 [localhost] mongod: child process started successfully, parent exiting

P.S. 除了上面通过提示信息解决问题外,还有一个比较暴力的方法,直接关闭SELinux,但是不太建议。

# setenforce 0
# getenforce
Permissive

上面是临时关闭,如果是永久关闭,就需要编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,但是只有重启后才会发挥作用。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

centos 7 上配置SELinux允许nginx指定/home/www作为网站根目录

现象: 1 启动nginx成功,使用wget 127.0.0.1得到内容,但是提示是禁止访问(403); 2 查看/var/log/nginx/error.log,提示访问/home/www/l....
  • qidizi
  • qidizi
  • 2014-11-19 23:19
  • 11879

centos中selinux功能及常用服务配置

SELinux: Secure Enhenced Linux 常用命令 获取selinux的当前状态: # getenforce 临时启用或禁用: # setenfoce 0|1...
  • reblue520
  • reblue520
  • 2016-03-08 09:44
  • 3608

Nginx 因 Selinux 服务导致无法远程访问

本文暂且叫这个名吧,因为不是很理解 Selinux ,也许你有更好的办法请告知我! 一、问题现象 Nginx 启动后本机可以正常访问,使用Curl 命令可以获取默认 index.html,其他界面均不...
  • johnnycode
  • johnnycode
  • 2014-12-15 20:36
  • 5198

Centos7安装mongodb出现的问题:服务无法启动

问题描述:Centos7安装mongodb刚开始安装成功时执行sudo service mongod start 能启动,执行sudo service mongod status显示Active: a...
  • bwangk
  • bwangk
  • 2016-12-18 14:19
  • 2362

Centos7安装mongodb出现的问题:服务无法启动

问题:     Centos7安装MongoDB刚开始安装成功时执行sudo service mongod start 能启动,执行sudo service mongod status显示Active...
  • xfyangle
  • xfyangle
  • 2017-03-21 19:09
  • 550

docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

  • 2017-10-26 15:16
  • 28KB
  • 下载

Centos7基础环境配置(为普通用户添加root权限/更换yum源/关闭防火墙/系统SELinux设置)

为普通用户添加root权限普通用户的权限低得可怜,直接用root用户又危险,为普通用户添加root权限就显得很重要了。在这里用户为:yunge 切换到root用户 susu命令切换到root用户,否则...
  • weixin_38168620
  • weixin_38168620
  • 2017-07-17 16:14
  • 550

Centos7安装和配置FTP(以及用户的创建,selinux的设置,防火墙设置)

1、安装vsftpd及ftp命令 yum install vsftpd -y yum install ftp -y 安装后的主配置文件位置:/etc/vsftpd/vsftpd.conf 2...
  • www1056481167
  • www1056481167
  • 2018-01-09 17:41
  • 51

nginx 自定义web目录 permission denied (403错误 ) centos7 SELinux

nginx 自定义web目录 permission denied (403错误 ) centos7 SELinux如标题: 系统环境为centos7; web服务软件为:nginx; SEL...
  • CHTSX
  • CHTSX
  • 2016-02-25 11:56
  • 2553

centos7安装mongodb 及开机自动启动

1,下载安装包 下载mongoDB的安装文件 地址:https://www.mongodb.org/downloads#production  选择Linux 64-bit lega...
  • LFGxiaogang
  • LFGxiaogang
  • 2017-12-28 17:10
  • 59
    个人资料
    • 访问:1173687次
    • 积分:12646
    • 等级:
    • 排名:第1282名
    • 原创:177篇
    • 转载:6篇
    • 译文:34篇
    • 评论:398条
    博客专栏
    最新评论
    独乐乐不如众乐乐