Redis

Redis 在作為服務執行時無法啟動 - 無法 chdir:權限被拒絕

  • February 20, 2022

我已經執行了幾個月從原始碼建構的 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

引用自:https://serverfault.com/questions/801621