재부팅 시 Fail2ban 소켓 권한 재설정

재부팅 시 Fail2ban 소켓 권한 재설정

fail2ban.sock여기에 설명된 대로 Zabbix가 Fail2ban을 모니터링할 수 있도록 내 파일에 특정 그룹/권한이 설정되어 있습니다.https://github.com/hermanekt/zabbix-fail2ban-discovery-

서비스를 다시 시작한 후 권한이 올바른지 확인하기 위해 systemd 서비스 구성에 다음 줄을 추가했습니다.

[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

.NET을 사용하여 수동으로 서비스를 다시 시작하려고 하면 완벽하게 작동합니다 systemctl restart fail2ban. 그런데 어떤 이유에서인지 재부팅 후 작동이 되지 않습니다. ExecStartPost더미를 사용 하여 일부 디버그 라인을 추가하려고 시도했는데 echo거기에 있으므로 ExecStartPost작업이 실행되고 있습니다. 하지만 뭔가 다른 것이 부팅 시 권한을 다시 쓰는 것 같습니다. 문제 해결 방법에 대한 아이디어가 있습니까?

답변1

이는 "타이밍" 문제처럼 보일 수 있습니다. 첫 번째 시간 ExecStartPost초과 또는 여러 ExecStartPost항목이 직렬로 평가되지 않고 병렬로 실행되지 않거나(지정된 Type장치 또는 기타 설정으로 인해) 유사한 문제일 수 있습니다.

한 줄이나 일부 스크립트로 다시 작성하고 단일 ExecStartPost매개변수를 사용하거나...

/run/fail2ban디렉토리(예: in ) 에 대해 기본 acl을 설정하지 않으면 ExecStartPre초기에 올바른 권한으로 소켓이 생성됩니다. 보다https://unix.stackexchange.com/a/1315/452987

따라서 다음과 같이 시도해 보십시오.

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

또 다른 변형은 systemd 장치의 매개 변수 /opt/fail2ban또는 . 그리고 권한을 지속적으로 설정하십시오./run/fail2ban-ssocket/etc/fail2ban/fail2ban.local

답변2

시스템화된 서비스 단위를 사용하고 있으므로시스템 소켓 유닛또한. 소켓 장치를 생성하면 systemd가 소켓 파일을 관리합니다. 소유권과 권한은 SocketMode, SocketUser및 으로 설정할 수 있습니다 SocketGroup. 그런 다음 서비스 단위의 섹션 [Unit]Requires=yourservice.socket.

관련 정보