sudoの#includeおよび#includedirディレクティブの先頭にポンド(#)文字が付いているのはなぜですか


36

sudo環境のセットアップ中に、includeディレクティブの先頭にポンド(#)文字が付いていることに気付きました。

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として扱われます)。コメント文字とそれ以降のテキスト(行末まで)は無視されます。

#include#includedirディレクティブでポンド文字を使用する選択が行われた理由を誰もが知っていますか?

副次的注意事項として、私はしばしばegrep -v '^#|^$' configfile、デフォルトではない/アクティブな設定を取得するために何かを使用しますが、これは明らかにsudoersファイルに対して機能しません。

回答:


38

#include2004年に追加されまし。すでに存在していたものと互換性がなければなりませんでした。include /path/to/fileただし、あいまいになるとは思いませんが、パーサーはinclude /path/to/file(includeディレクティブ)include = foo(ユーザーincludeにコマンドの実行を許可する)を区別する必要があるため、解析が少し難しくなる可能性がありますfoo

しかし、主な理由は、マニュアルがインスピレーションとして明示的に引用しているCプリプロセッサのように見えることだと思います。


1
残念ながら、これらの説明はマニュアルから削除されています(少なくともUbuntu、RedHat、OpenBSD、およびSolarisでは)。
ランバート

2
初めてsudoersファイルを分析したときinclude、ディレクティブで#includeあり、コメントアウトされたディレクティブであると考えました。最小限の驚きのルールは激しく違反した。私の意見では、それは悪い設計です。
カミル・マチオロフスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.