Чому директиви #include та #includedir у sudo мають префікс із символом pound (#)


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 Можна включити й інші файли sudoers з файлу sudoers, який зараз розбирається за допомогою директив #include та #includedir.

І:

Інші спеціальні символи та зарезервовані слова Знак фунта (`# ') використовується для позначення коментаря (за винятком випадків, коли він є частиною директиви #include або якщо він не зустрічається в контексті імені користувача і супроводжується однією або кількома цифрами, в такому випадку це трактується як уід). І символ коментаря, і будь-який текст після нього, до кінця рядка, ігноруються.

Хтось знає, чому було зроблено вибір на використання символу фунта в директивах #includeта #includedirдирективах?

Як бічна примітка: я часто використовую щось на зразок, egrep -v '^#|^$' configfileщоб отримати налаштовані не за замовчуванням / активні налаштування, і це, очевидно, не працює для sudoersфайлу.

Відповіді:


38

#includeбув доданий у 2004 році . Це мало бути сумісним із тим, що вже було. Я не думаю, що include /path/to/fileце було б неоднозначно, але, можливо, було б трохи важче розібратися, тому що аналізатору доведеться відрізняти include /path/to/file(включати директиву) від include = foo(дозволити користувачу includeзапускати команду foo).

Але я думаю, що головним чином причина полягала в тому, щоб виглядати як препроцесор C, який у посібнику прямо вказано як натхнення.


1
Хороший улов та пояснення, на жаль, ці пояснення видалено з посібників (принаймні, на Ubuntu, RedHat, OpenBSD та Solaris).
Ламберт

2
Перший раз, коли я проаналізував свій sudoersфайл, я подумав include, що це директива, і #includeце директива прокоментується . Правило найменшого сюрпризу порушувало важко. На мою думку, це поганий дизайн.
Каміль Маціоровський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.