![sudoers에서 명령 매개변수에 대한 정규식을 지정하는 방법](https://linux55.com/image/5295/sudoers%EC%97%90%EC%84%9C%20%EB%AA%85%EB%A0%B9%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%84%20%EC%A7%80%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
sudoers(5)
맨페이지에는 sudoers 파일에 대한 명령줄 인수에 쉘 스타일 와일드카드(메타 문자 또는 glob 문자라고도 함)를 사용할 수 있다고 나와 있습니다. 그것들은 *
, ?
, [...]
그리고 입니다 [!...]
.
내 생각은 정규식 스타일 로 뭔가를 사용 하는 것 입니다 /path/to/command -a[v]*
. 그러나 이것은 작동하지 않습니다.command -a
command -av
command -avvv...v
-v
tcpdump
다양한 양의 콘텐츠를 여러 번 /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 바이너리의 수동 패치 버전을 실행하게 되므로 주의하세요.