스크립트에 대한 failure2ban 권한이 거부되었습니다.

스크립트에 대한 failure2ban 권한이 거부되었습니다.

방금 RHEL 5에서 6.5로 업그레이드하고 fail2ban재설정했습니다. 권한 문제로 인해 현재 사용자 지정 작업을 작동할 수 없는 것 같습니다. 나는 내가 뭘 잘못하고 있는지, 어떻게 fail2ban스크립트를 성공적으로 실행할 수 있는지 알고 싶지 않습니다 .

fail2ban일반 쉘 스크립트를 실행하도록 설정된 작업이 있습니다 . 나는 이런 것을 선호합니다.

actionstart = <script> <jail> start

<script>파일에 지정된 위치 jail.local:

action   = run-script[jail=drupal-reg-lim,script=/path/to/script.sh]

하지만 스크립트를 실행하려고 하면 다음과 같이 126 종료 코드가 표시됩니다.tldp.org, 이는 "권한 문제가 있거나 명령을 실행할 수 없음"을 의미합니다.

이는 내용이 script.sh완전히 비어 있는지, 아니면 셰뱅( )만 있는지 에 관계없이 #!/bin/sh발생합니다 . sudo /path/to/script.sh작업을 실행해 보세요 .

나는 actionstart그것을 로그로 만들고 스크립트를 다음과 같이 입력하도록 변경하려고 시도했습니다 /etc/fail2ban/action.d/script.sh.

actionstart = <script> <jail> start || logger -dit fail2ban-run-script <script> <jail> start failed: exitcode = $?

다음을 효과적으로 출력합니다 /var/log/messages.

Apr 23 05:49:25 xx1 fail2ban-run-script[8236]: /etc/fail2ban/action.d/script.sh drupal-reg-lim start failed: exitcode = 126

sh또한 작업을 실행하려고합니다 . 스크립트를 실행하면 실패합니다. 나는 또한 다음을 시도했습니다 chmod 777 script.sh.

-rwxrwxrwx. 1 root root      10 Apr 23 05:12 script.sh

또 다른 생각은 이것이 SELinux 보안 컨텍스트(로그 출력에서 id​​알 수 있음 uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:system_r:fail2ban_t:s0)와 관련이 있을 수 있다는 것입니다. 그러나 저는 이것을 성공적으로 테스트하지 못했습니다( 작동 하더라도 sudo -t fail2ban_t -r system_r /bin/sh실패합니다 . 내 시스템에서 뭔가 잘못하고 있는 것일 수 있습니다 ).Permission deniedfail2banshsudo

알아두면 유용할 수 있는 것은 fail2banPython을 사용하여 os.system()명령을 실행하는 것입니다. 그러나 이 방법으로 다시 만들려는 시도도 실패했습니다.

>>> import os
>>> print os.system('/etc/fail2ban/action.d/script.sh || echo "No"')
0

이 모든 것이 나에게 아무것도 남기지 않았습니다. 어떤 종류의 도움이라도 받을 수 있어서 기뻐요.

(참고: 실제로 fail2ban어떤 이유로 인해 126 종료 코드를 얻지 못했고 코드 0x7e00과 함께 오류가 발생했습니다. 이는 프로세스가 중지되었지만 종료 코드가 0이라는 의미입니다. 알아내는 데 시간이 좀 걸렸습니다. 공유한다고 생각했습니다.)

답변1

언제나 그렇듯, 제가 실행하려는 스크립트의 오류 외에는 아무 관련이 없습니다!

특히 제가 호출하는 스크립트는 동일한 디렉터리에 있는 다른 스크립트를 실행하려고 합니다. BASE_DIR=$(dirname $(readlink -f "$0"))실수로 작성한 이름을 사용하는 대신 공용 디렉토리의 이름을 얻으려면 BASE_DIR=$(readlink -f "$0")말할 필요도 없이 상태 코드 126으로 "${BASE_DIR}/another_script.sh arg1 arg2..."실패했습니다(존재하지 않는 무의미한 경로를 실행하려고 했습니다 )./path/to/script.sh/another_script.sh

관련 정보