Permissões do soquete Fail2ban redefinidas na reinicialização

Permissões do soquete Fail2ban redefinidas na reinicialização

Eu tenho alguns grupos/permissões específicos definidos para meu fail2ban.sockarquivo para tornar o Zabbix capaz de monitorar o Fail2ban conforme descrito aquihttps://github.com/hermanekt/zabbix-fail2ban-discovery-

Adicionei as seguintes linhas à configuração do serviço systemd para garantir que as permissões estarão corretas após a reinicialização do serviço:

[Service]
ExecStartPost=/bin/sh -c "while ! [ -S /run/fail2ban/fail2ban.sock ]; do sleep 1; done"
ExecStartPost=/bin/chgrp fail2ban /run/fail2ban/fail2ban.sock
ExecStartPost=/bin/chmod g+w /run/fail2ban/fail2ban.sock

Funciona perfeitamente quando tento reiniciar o serviço manualmente usando o systemctl restart fail2ban. Mas, por algum motivo, não funciona após a reinicialização. Tentei adicionar algumas linhas de depuração ExecStartPostao dummy echoe elas estão lá, então ExecStartPostas ações estão sendo executadas. Mas parece que outra coisa reescreve a permissão na inicialização. Alguma idéia sobre como solucionar problemas?

Responder1

Isso parece possivelmente um problema de "tempo" - talvez a primeira de suas entradas ExecStartPosttenha expirado ou várias ExecStartPostentradas não sejam avaliadas serialmente e executadas em paralelo (devido à Typeunidade especificada ou alguma outra configuração) ou algo semelhante ...

Você pode tentar reescrevê-lo em uma única linha ou em algum script e usar um único ExecStartPostparâmetro, ou...

Por que simplesmente não definir o acl padrão para /run/fail2bano diretório (por exemplo, em ExecStartPre), para que o soquete seja criado inicialmente com as permissões corretas? Verhttps://unix.stackexchange.com/a/1315/452987

Então tente algo assim:

ExecStartPre=-/bin/mkdir -p /run/fail2ban && /bin/setfacl -d -m g:fail2ban:rw /run/fail2ban

Outra variante seria simplesmente definir outro caminho para o soquete fail2ban para algum diretório persistente (por exemplo, /opt/fail2banem vez de /run/fail2ban) com -sparâmetro na unidade systemd ou com parâmetro socketdentro de /etc/fail2ban/fail2ban.local. E defina as permissões de forma persistente.

Responder2

Como você está usando uma unidade de serviço systemd, valeria a pena criar umunidade de soquete systemdtambém. Ao criar a unidade de soquete, o systemd gerenciará o arquivo de soquete. Propriedade e permissões podem ser definidas com SocketMode, SocketUsere SocketGroup. Depois, na sua unidade de serviço, na seção [Unit]add Requires=yourservice.socket.

informação relacionada