특히 비밀번호 없이 다음 명령을 허용하고 싶습니다.
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
있고 작동합니다.