… но не в Illumos, OpenBSD или Linux; и только в исходной форме . Люди, пишущие на WWW-сайте Gentoo Linux, не имели опыта работы с достаточно широким спектром операционных систем.
Формат файла отличается во всех операционных системах. FreeBSD, читая файл /etc/master.passwd
, допускает строчные комментарии. Парсеры Linux, OpenBSD и Illumos для их файлов /etc/passwd
или /etc/master.passwd
этого не делают.
Как видите, первые несколько строк начального файла FreeBSD /etc/master.passwd
являются строками комментариев, которые явно игнорируются программой FreeBSD pw_mkdb
. В OpenBSD pw_mkdb
этого нет, а в стандартном /etc/master.passwd
нет комментариев.
Конечно, после того как программа pw_mkdb
скомпилировала исходный код в реальную базу данных, используемую библиотечными подпрограммами, выполняющими поиск в базе данных системных учетных записей, комментарии были отфильтрованы. Фактический скомпилированный формат базы данных — Berkeley DB,который не имеет комментариев.
Подсистема базы данных учетных записей пользователей Linux не использует скомпилированные файлы базы данных с индексами, в отличие от BSD. Однако подпрограммы библиотеки поиска, анализирующие исходные плоские таблицы, не допускают комментариев. То же самое верно для Illumos и для OpenSolaris до него.
POSIX указывает, что переносимое имя учетной записи может содержать только символы из так называемого -набора символов переносимого имени файла с дополнительным ограничением на первый символ имени. Этот набор не содержит символа #
.
Дополнительное ограничение на первый символ важно, потому что оно затрагивает причины, по которым #
вызовет проблемы с именами учетных записей. Имена учетных записей используются в качестве аргументов для программ, а аргументы, начинающиеся с -
, обычно обозначают аргументы опции . (Да, существуют способы избежать использования имен учетных записей в качестве аргументов параметров, но они не являются универсальными и не стандартизированными.)
В этом суть проблемы. Хотя фактическая исходная форма самой таблицы допускает любой символ, кроме разделителя полей (␊
), разделителя записей(:
)или (во FreeBSD ), конец -из -ввод строки комментария(#
)в первом поле записи, использование имен учетных записей в большом количестве других контекстов накладывает на них гораздо больше ограничений:
␀
-, поэтому они не могут содержать символ ␀
. getty
программ в login
в старых операционных системах -. (Illumos входит в семейство Unices, которое избавилось от программы getty
еще в 1988 году , разумеется.)Это исключает символ ␀
и инициал -
. /etc/rc.conf
до /etc/sysconfig/wibble
, поэтому метасимволы оболочки, которые нарушили бы такие сценарии, не используются. Таким образом, #
, будучи метасимволом оболочки, не используется. ␀
и =
(, вызывающие неоднозначность при синтаксическом анализе среды процесса ), не используются. =
, #
и ;
, не используются. Таким образом, хотя использование #
не комментирует вещи в файле паролей на Illumos, его использование вызовет немало проблем в другом месте .
… соглашение FreeBSD о начальном _
, что-то вроде соглашения Debian о префиксе Debian-
или соглашение Дэниела Дж. Бернштейна о начальном верхнем регистре G
.
… правильное поле записи в первую очередь! Это не поле имени. Это поле пароля, которое в Illumos содержит специальные значения для заблокированных учетных записей и без -учетных записей .