Redis
Redis 在作為服務執行時無法啟動 - 無法 chdir:權限被拒絕
我已經執行了幾個月從原始碼建構的 redis,但我今天轉而使用包管理器(在 Debian 上執行)。在我將工作目錄更改為
/home/redis/server
. 現在,當使用 啟動它作為服務時sudo service redis-server start
,我收到一個錯誤,並將以下內容添加到 redis 日誌中:Can't chdir to '/home/redis/server': Permission denied
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
如果我
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
,現在它可以正常工作了。在此之後,執行
systemctl daemon-reload
以在執行前重新載入更改service start redis-server
。