/usr/bin/env 및 sudo를 사용한 shebang

/usr/bin/env 및 sudo를 사용한 shebang

나는 많은 스크립트를 가지고 있는데, 대개 shebang과 /usr/bin/env 및 필요한 해석기(예: "#!/usr/bin/env perl")로 시작합니다. 이 방법은 수년 동안 잘 작동했지만 어떤 이유로 FreeBSD 시스템에 sudo를 중단하는 스크립트가 있다는 것을 이해하지 못합니다.

% cat test.pl
#!/usr/bin/env perl
system( "id" );
exit 0;

nagios 사용자로 이 작업을 수행하면 정상적으로 작동합니다. 사용자 nagios로 sudo를 사용하여 이 작업을 수행해도 잘 작동합니다.

그러나 nrpe가 사용자 nagios로 실행되고 sudo를 command_prefix로 사용하는 모니터링 서버의 nrpe 데몬을 통해 이 작업을 수행하면 오류 코드 3으로 종료됩니다. nrpe는 아무런 이유도 표시하지 않고 종료 코드만 표시하므로 이것이 작동하지 않는 이유를 모르겠습니다. (예, sudo는 명령줄에서 작동하므로 /usr/bin/env 및 test.pl을 허용하도록 올바르게 구성된 것으로 보입니다)

nrpe[50742]: Running command: /usr/local/bin/sudo /usr/local/etc/nagios/test.pl
nrpe[50742]: Command completed with return code 3 and output: 
nrpe[50742]: Return Code: 3, Output: NRPE: Unable to read output

예, Shebang 문자열을 /usr/local/bin/perl로 변경한 다음 nrpe를 통해 sudo와 함께 사용할 수 있지만 스크립트는 다양한 OS 유형에 보편적으로 사용되도록 고안되었습니다.

그럼, 내가 여기서 무엇을 놓치고 있는지 아시나요?

관련 정보