搜索

首页  >  问答  >  正文

SELinux开启状态,Redis无法自动启动。请问如何解决?

Redis安装之后,建立/etc/init.d/redis_6379脚本文件。但是当系统Reboot之后,Redis启动失败。
查看/var/log/audit/audit.log,有如下信息:

type=AVC msg=audit(1492424320.122:76): avc:  denied  { open } for  pid=907 comm="redis-server" path="/var/log/redis_6379.log" dev="sda2" ino=9298368 scontext=system_u:system_r:redis_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
type=SYSCALL msg=audit(1492424320.122:76): arch=c000003e syscall=2 success=no exit=-13 a0=7fc5ac021760 a1=441 a2=1b6 a3=24 items=0 ppid=904 pid=907 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="redis-server" exe="/usr/bin/redis-server" subj=system_u:system_r:redis_t:s0 key=(null)
type=SERVICE_START msg=audit(1492424320.130:77): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=redis_6379 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'

验证一:
systemctl start redis_6379,失败。
setenforce 0之后,systemctl start redis_6379,成功。
验证二:
SELINUX=disabled之后,重启系统,登录之后发现redis启动成功。
经由此两项验证,推测是SELinux引发的启动失败。

之后,根据之前的一点点经验尝试修复:
1.这个是最基本的命令,redis_t是从前面audit.log看来的。

[root@php-dev-test log]# chcon -t redis_t /var/log/redis_6379.log 
chcon: failed to change context of ‘/var/log/redis_6379.log’ to ‘system_u:object_r:redis_t:s0’: Permission denied

2.这个是调整MySQL数据目录是学来的。

[root@php-dev-test log]# semanage fcontext --add --type redis_t '/var/log/redis_6379.log'
ValueError: Type redis_t is invalid, must be a file or device type

求教:如何才可以在开启SELinux的情况下是的Redis可以正常启动。

顺便,曾经在其他资料中见过到一种启动方法:

/etc/init.d/redis_6379 start

在开启SELinux,使用systemctl start redis_6379命令启动服务失败的情况下,可以用这个命令成功启动服务。
这也令人好奇,这个命令是如何规避了SELinux控制的呢?

曾经蜡笔没有小新曾经蜡笔没有小新2773 天前768

全部回复(0)我来回复

暂无回复
  • 取消回复