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.10sudoersファイルはPOSIX拡張正規表現をサポートします。マニュアルによれば、次のように必要なものを取得できます。

/path/to/command ^-av*$

1.9.10より前のバージョンでは、sudoersマニュアルページでこの機能がサポートされていないことが明らかになりました。マニュアルページのコメントは、fnmatch()一致を実行するためにシステム機能を使用することを示します。 Linux / glibcベースのシステムでは、fnmatch()正規表現と表現機能は似ていますが、構文の異なる拡張ワイルドカード形式を使用できます。

sudoしたがって、sudoがfnmatchを呼び出す場所を見つけて拡張構文をサポートするように再構築できる必要がある場合は、FNM_EXTMATCHフラグパラメータと#define _GNU_SOURCEそれを呼び出すファイルの先頭に追加します。

もちろん、これはsuidバイナリの手動パッチバージョンを実行しますので注意してください。

おすすめ記事