O Redis não inicia quando executado como serviço - não é possível chdir: permissão negada

1

Eu tenho executado redis que construí a partir do código fonte por vários meses, mas eu mudei para usar um gerenciador de pacotes para ele hoje (rodando no Debian). Ele correu bem até que eu mudei o diretório de trabalho para /home/redis/server . Agora, ao iniciá-lo como um serviço usando sudo service redis-server start , recebo um erro e o seguinte é adicionado ao log de redis:

Can't chdir to '/home/redis/server': Permission denied

Executando getfacl recursivamente no diretório redis retorna

# 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

Se eu su redisar e executá-lo manualmente, usando /usr/bin/redis-server /etc/redis/redis.conf , ele funcionará corretamente, por isso só acontece quando tento usar o script init.d incluído.

    
por JackW 07.09.2016 / 16:55

2 respostas

4

Acontece que o script de inicialização incluído no Redis não é realmente usado e, em vez disso, usa /etc/systemd/system/redis.service . Há várias restrições de segurança nesse arquivo, incluindo ProtectHome=yes e limitação dos diretórios que podem ser gravados. Eu modifiquei esse arquivo para comentar ProtectHome=yes e para adicionar uma linha ReadWriteDirectories=-/home/redis/server e agora ele funciona corretamente.

    
por 08.09.2016 / 18:15
0

Você deve ter certeza de que o serviço de redis é iniciado pelo init.d com o contexto de usuário redis.

Edite /etc/init.d/redis-server e adicione

--chuid redis:redis

onde start-stop-daemon é chamado. Como su to redis está funcionando, isso deve corrigir o erro.

    
por 07.09.2016 / 18:59

Tags