특정 매개변수를 허용하도록 sudo를 구성하는 방법

특정 매개변수를 허용하도록 sudo를 구성하는 방법

특히 비밀번호 없이 다음 명령을 허용하고 싶습니다.

 sudo cfgutil --ecid "${Device_ECID}" install-application "${in_File_Name}"

한 통화에서 다음 통화로 변경됩니다 Device_ECID. in_File_Name몇 가지 예를 찾았지만 대부분은 그 반대입니다. 가변 인수를 완전히 허용하지 않거나 모든 인수를 허용합니다.


고쳐 쓰다:

게시 직후 와일드카드를 발견했습니다. 다음은 나에게 효과적이었습니다.

%_developer ALL=(root) NOPASSWD: /usr/local/bin/cfgutil list-devices
%_developer ALL=(root) NOPASSWD: /usr/local/bin/cfgutil --ecid * install-application *

그러나 @marcus-müller의 답변으로 판단하면 파일 이름에 실제 공백이 없기 때문에 이것이 바로 그런 경우라고 생각합니다. 그래서 제가 또 뭔가를 놓치고 있는 건 아닌지 궁금합니다.

답변1

Sudo에는 다중 단어 명령줄을 선택적으로 허용하는 기능이 있지만이건 어디에서나 나쁜 생각이에요.

그러나 내가 아는 한 가변 자리 표시자는 sudoers지원되지 않으며 솔직히 대안은 간단합니다.

대신, 쉘 스크립트를 작성하고 루트만이 이를 수정할 수 있는지 확인한 후 실행 가능으로 표시할 것을 강력히 권장합니다. 스크립트는 두 개의 매개변수만 허용하며 cfgutil필요에 따라 호출됩니다.

#!/bin/sh
# Add string sanitation here if needed
cfgutil --ecid "$1" install-application "$2"

그리고 그것을 허용하십시오 sudoers. 그러면 할 수 sudo myscript argument1 argument2있고 작동합니다.

관련 정보