linux redis 运行状态,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控制的呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值