很抱歉,如果这是一个重复的问题,但是我已经搜索了数小时的stackoverflow,却找不到答案。
场景:
我更改了Redis的dump.rdb的默认目录,因为我的雇主希望在特定目录中使用它。我在redis.conf文件dir中编辑了该行,使其指向/ www / redis / sessions。我没有更改文件名,所以它仍然是dump.rdb。我也将它作为服务运行在/ lib / systemd / system中。如果有帮助,我正在使用redis v4.0.11。
问题:
当我使用systemctl停止守护程序时,请停止redis。我从SELinux收到一条错误消息,说redis-server没有在/ www / redis / sessions中写入的权限。它还尝试创建名称为temp-####。rdb的临时文件,而不是尝试打开dump.rdb。我检查了目录和文件权限,并确保任何用户都可以写入它。我仍然遇到相同的错误。
已尝试: 1.在systemd的服务文件中添加ReadWriteDirectories = / www / redis / sessions行。 2.更改/ www / redis / sessions目录,以便任何人都可以写入该目录。 3.将redis.conf文件中的目录更改为/ www / redis / sessions 4.检查redis实例是否使用./redis-cli CONFIG GET *加载正确的redis.conf文件。 5.添加了SELinux建议的建议的本地策略 6.使用chcon -R --type = httpd_sys_content / www / redis / sessions和chcon -R --type = httpd_sys_rw_content_t / www / redis / sessions
更改redis服务器的内容非常感谢您的帮助或建议。
答案 0 :(得分:1)
SELinux所使用的策略与用chmod
等编辑的访问权限不同。如果不发布策略,您将不会得到太多帮助。作为一个疯狂的猜测,我会说redis的create mask错误。
temp-####.rdb
文件不是问题。 Redis首先写入临时文件,然后将它们移动到最终目标。这是在写入失败时保留现有文件的典型方法。
您是否考虑过将.rdb保留在原位置,并简单地将其链接到您的微管理老板想要的位置?