sudoers에서 명령 매개변수에 대한 정규식을 지정하는 방법

sudoers에서 명령 매개변수에 대한 정규식을 지정하는 방법

sudoers(5)맨페이지에는 sudoers 파일에 대한 명령줄 인수에 쉘 스타일 와일드카드(메타 문자 또는 glob 문자라고도 함)를 사용할 수 있다고 나와 있습니다. 그것들은 *, ?, [...]그리고 입니다 [!...].

내 생각은 정규식 스타일 로 뭔가를 사용 하는 것 입니다 /path/to/command -a[v]*. 그러나 이것은 작동하지 않습니다.command -acommand -avcommand -avvv...v-vtcpdump

다양한 양의 콘텐츠를 여러 번 /path/to/command -a -v추가하지 않고 이를 수행할 수 있는 방법이 있습니까 ?sudoers-v

답변1

에서 시작하다버전 1.9.10, sudoers파일은 POSIX 확장 정규식을 지원합니다. 매뉴얼에 따르면 다음과 같이 원하는 것을 얻을 수 있습니다.

/path/to/command ^-av*$

1.9.10 이전 버전에서는 sudoers매뉴얼 페이지에서 이 기능이 지원되지 않는다는 점을 분명히 밝혔습니다. 매뉴얼 페이지의 주석은 fnmatch()일치를 수행하기 위해 시스템 기능을 사용함을 나타냅니다 . Linux/glibc 기반 시스템에서는 fnmatch()정규 표현식과 표현 기능이 비슷하지만 구문이 다른 확장 와일드카드 형식을 사용할 수 있습니다.

sudo따라서 sudo가 fnmatch를 호출하는 위치를 찾아 확장 구문을 지원하도록 다시 빌드 할 수 있어야 하는 경우 FNM_EXTMATCH플래그 매개변수와 #define _GNU_SOURCE이를 호출하는 파일의 맨 위에 추가하세요.

물론 이렇게 하면 suid 바이너리의 수동 패치 버전을 실행하게 되므로 주의하세요.

관련 정보