使 Redis 用户拥有 Redis unixsocket

Make Redis unixsocket owned by redis user

我已经在 Debian 上安装了 Redis 3.0.6。有一个 /etc/init.d/redis 文件可以在系统启动时启动 Redis 服务器,或者我可以手动调用它来 start/stop 服务器。问题是这个脚本是 运行 root 用户。

我有一个 redis 用户和组,我想在 运行 下创建 Redis。但我不知道如何(我还没有找到让 Redis 在启动后切换用户 ID 的选项)。在我的配置文件中,我使用

unixsocket /home/redis/redis.sock
unixsocketperm 770

但是,当然,redis.sockroot 所有。

drwxr-xr-x 2 redis redis  4096 Jan 18 03:34 bin
drwxr-xr-x 2 redis redis  4096 Jan 18 03:55 data
-rw-r--r-- 1 redis redis 41638 Jan 18 03:52 redis.conf
-rw-r--r-- 1 redis redis 16348 Jan 18 03:55 redis.log
-rw-r--r-- 1 root  root      5 Jan 18 03:55 redis.pid
srwxrwx--- 1 root  root      0 Jan 18 03:55 redis.sock

过程也是。

root      7913  0.1  0.1  38016  1976 ?        Ssl  03:55   0:00 /home/redis/bin/redis-server *:6379

最终,我有一个 git 用户也在 redis 组中,因此最终应该可以访问 redis.sock。 (这是用于手动部署 GitLab CE)。

我该如何配置 Redis 服务器?

更新您的 /etc/init.d 以在启动服务期间使用 sudo(第 33 行):

sudo -u redis $EXEC $CONF

您可能需要清理旧文件(在 /var/lib 中)或重置其对 redis 的权限。