我已经运行了几个月从源代码构建的 redis,但今天我转而使用包管理器(在 Debian 上运行)。它运行良好,直到我将工作目录更改为/home/redis/server
. 现在,当使用 将其作为服务启动时sudo service redis-server start
,出现错误,并将以下内容添加到 redis 日志中:
Can't chdir to '/home/redis/server': Permission denied
Run Code Online (Sandbox Code Playgroud)
getfacl
在 redis 目录上递归运行返回
# file: .
# owner: redis
# group: redis
user::rwx
group::rwx
other::rwx
# file: server
# owner: redis
# group: redis
user::rwx
group::rwx
other::rwx
# file: server/dump.rdb
# owner: redis
# group: redis
user::rwx
group::rwx
other::rwx
Run Code Online (Sandbox Code Playgroud)
如果我su
要 redis 并手动运行它,使用/usr/bin/redis-server /etc/redis/redis.conf
,它可以正常工作,所以它只会在尝试使用包含的 init.d 脚本时发生。
事实证明,Redis 中包含的 init 脚本实际上并未使用,而是使用/etc/systemd/system/redis.service
. 此文件中有许多安全限制,包括ProtectHome=yes
和限制可以写入的目录。我已修改此文件以注释掉ProtectHome=yes
并添加一行ReadWriteDirectories=-/home/redis/server
,现在它可以正常工作了。
归档时间: |
|
查看次数: |
8052 次 |
最近记录: |