使Redis unixsocket归Redis用户所有

使Redis unixsocket归Redis用户所有,unix,redis,debian,Unix,Redis,Debian,我已经在Debian上安装了Redis 3.0.6。有一个/etc/init.d/redis文件,在系统启动时启动redis服务器,或者我可以手动调用它来启动/停止服务器。问题是此脚本以root用户身份运行 我有一个redis用户和组,我想让redis在其中运行。但我不知道怎么做(我还没有找到一个选项,让Redis在启动后切换用户ID)。在我的配置文件中,我使用 unixsocket /home/redis/redis.sock unixsocketperm 770 但是,当然,redis.s

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

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

unixsocket /home/redis/redis.sock
unixsocketperm 770
但是,当然,
redis.sock
属于
root

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行):


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

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


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

如果在
/tmp
中创建套接字会怎么样?就像我试着用redis 3一样。套接字所有者保留给redis用户itself@AliNikneshan我可以试试,但redis用户也是root用户,我也想更改。我只是不知道init.d脚本在运行期间如何向用户模拟自己。运行
ps-ef | grep redis server
并检查守护进程是否在redis用户上运行。@AliNikneshan我使用
sudo服务redis start启动redis
。它现在在
根用户下运行<代码>根7913 1 0 03:55?00:00:06/home/redis/bin/redis server*:6379
这是
/etc/init.d/redis
脚本:如果在
/tmp
中创建套接字会怎么样?就像我试着用redis 3一样。套接字所有者保留给redis用户itself@AliNikneshan我可以试试,但redis用户也是root用户,我也想更改。我只是不知道init.d脚本在运行期间如何向用户模拟自己。运行
ps-ef | grep redis server
并检查守护进程是否在redis用户上运行。@AliNikneshan我使用
sudo服务redis start启动redis
。它现在在
根用户下运行<代码>根7913 1 0 03:55?00:00:06/home/redis/bin/redis server*:6379
这是
/etc/init.d/redis
脚本:
sudo -u redis $EXEC $CONF