sudoの#includeおよび#includedirディレクティブの前にポンド(#)文字が付くのはなぜですか?

sudoの#includeおよび#includedirディレクティブの前にポンド(#)文字が付くのはなぜですか?

環境の設定中に、sudoインクルードディレクティブの前にポンド(#)文字が付いていることがわかりました。

Solarisはこれを次のように表示します。

## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

ドキュメント(LinuxおよびSolaris)には、次のように記載されています。

sudoersに他のファイルを含める#includeおよび#includedirディレクティブを使用して、現在解析中のsudoersファイル内に他のsudoersファイルを含めることができます。

そして:

他の特殊文字と予約語ポンド記号( '#')は、コメントを表示するために使用されます(#includeディレクティブの一部であるか、ユーザー名のコンテキストで発生し、後に1つ以上の数字が続かない限り)。この場合、uidとして扱われます。コメント文字とその後のすべてのテキスト(行末まで)は無視されます。

#includeandディレクティブでポンド文字を使用することを選択した理由を知っている人はいますか#includedir

参考までに、私は基本的ではない/アクティブな構成設定を得るために同様のアプローチを頻繁に使用しますが、これは明らかにこのファイルegrep -v '^#|^$' configfileでは機能しません。sudoers

答え1

#include参加する2004年。既存のコンテンツと互換性がなければなりません。しかし、あいまいだとは思わないが、パーサーが(指示文を含む)と(ユーザーがコマンドを実行できるようにする)をinclude /path/to/file区別する必要があるため、構文解析が少し難しい場合があります。include /path/to/fileinclude = fooincludefoo

しかし、最大の理由はCプリプロセッサと似ているからだと思います。手動インスピレーションとして明示的に引用されました。

答え2

ちなみに、私はしばしばegrep -v '^#|^$' configfileのようなものを使用してデフォルトではない/アクティブな設定を取得しますが、これは明らかにsudoersファイルでは機能しません。

が始まりますsudo バージョン 1.9.1サポートとして@include追加され@includedirました。「あまり混雑していない」

@includeと@includedirのサポートを追加

ハッシュ文字がコメント文字でもある場合、#includeおよび#includedirよりも混乱します。

また、このコミットは、以前に使用された純粋な語彙分析器アプローチではなく、インクルードディレクティブの実際の解析を追加します。したがって、二重引用符で囲まれた文字列を使用するか、バックスラッシュでスペース文字をエスケープしてスペースを含むファイルを含めることができます。

使用して#include#includedirます予約する1.9.1 以前のバージョンとの互換性のため。

関連情報