Ubuntu – systemd redis.service won’t allow unix socket connections

redissystemdUbuntu

I've installed redis-server on ubuntu 16.04 and I'm trying to connect to it via unix socket. I have commented out the bind and port directives in redis.conf and uncommented the unixsocket directives so I have:

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
# port 6379

# TCP listen() backlog.
#
# In high requests-per-second environments you need an high backlog in order
# to avoid slow clients connections issues. Note that the Linux kernel
# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
# in order to get the desired effect.
tcp-backlog 511

# By default Redis listens for connections from all the network interfaces
# available on the server. It is possible to listen to just one or multiple
# interfaces using the "bind" configuration directive, followed by one or
# more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1

# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /var/run/redis/redis.sock
unixsocketperm 770

I've added my local user to the redis group, and restarted the redis service with sudo systemctl restart redis.serivce so the /var/run/redis/ folder looks like this:

drwxrwsr-x  2 redis redis   80 Apr 27 17:39 .
drwxr-xr-x 34 root  root  1160 Apr 27 16:40 ..
-rw-r--r--  1 redis redis    6 Apr 27 17:38 redis-server.pid
srwxrwx---  1 redis redis    0 Apr 27 17:38 redis.sock

I would expect to be able to connect to the socket now using

$ redis-cli -s /var/run/redis/redis.sock

however I get:

Could not connect to Redis at /var/run/redis/redis.sock: Permission denied
not connected> 

weirdly running $ redis-cli gives me the default 127.0.0.1:6379> which ought to be unbound?

If I look at the redis process:

redis    18108  0.0  0.0  40136  6652 ?        Ssl  17:45   0:00 /usr/bin/redis-server *:6379

which looks to me like it's not even using the correct conf file and binding to *:6379. The /etc/systemd/system/redis.service file has

ExecStart=/usr/bin/redis-server /etc/redis/redis.conf

So I'm confused as to why that's not the process being run, or why the permissions aren't allowing me to connect.

Best Answer

Have you logged out and back in again after adding your local user to the redis group? You need to do so to apply the changes.