В современной системе Unix или Linux, как узнать, в каком кодовом наборе файл /etc/passwd
хранит имена пользователей? Разрешено ли имена пользователей содержать символы с акцентом (от 0x80..0xFF, скажем, до ISO 8859-1 или 8859-15)? Может ли файл /etc/passwd
содержать UTF-8? Можете ли вы сказать, что он содержит UTF-8? Как насчет простого текста паролей до того, как они зашифрованы или хешированы?
Очевидно, что если имена пользователей и другие данные ограничены диапазоном 0x00..0x7F (и в любом случае исключают 0x00), то нет разницы между UTF-8, 8859-1 или 8859-15; все присутствующие символы закодированы одинаково.
Кроме того, я использую /etc/passwd
в качестве аббревиатуры для чего-то вроде «базы данных идентификации и аутентификации пользователя (иногда называемой службой каталогов) на машине на основе Unix, обычно доступной через PAM и иногда размещаемой на другие машины полностью с локальной, но иногда все же фактически представляют собой файл на локальном жестком диске, обычно называемый /etc/passwd
, часто поддерживаемый /etc/shadow
". Я также предполагаю, что эквивалентные вопросы о базе данных группы (часто файл /etc/group
) имеют одинаковый ответ.