[Devel] О локализации имён пользователей
Сергей Шубин
s.v.shubin на gmail.com
Вт Фев 19 20:28:17 MSK 2008
Я работаю над задачей локализации имён пользователей.
О текущем ходе работы можно узнать здесь:
http://wiki.office.etersoft.ru/RusskieImena?v=49i
На данный момент я сделал патч для shadow-utils и они успешно добавляют
русские имена в системную базу. Теперь я работаю над тем, чтобы
пользователь с таким именем мог войти в систему. И на этом этапе
возникает такой вопрос: согласно какой локали проверять имя
пользователя? Алгоритм проверки корректности имени использует функции
iswalpha/iswdigit и тому подобные, имя пользователя предварительно
переводится в Unicode-строку функцией mbstowcs, поведение которой как
раз и зависит от локали.
Есть несколько соображений на этот счёт:
1. Установить локаль пользователя root в ту локаль, в которой должно
производиться сравнение. Если мы хотим имена пользователей в UTF-8, а
сообщения программ оставить английскими - нам нужна локаль en_US.utf8
или en_GB.utf8. Если нам нужны имена в koi8-r - тоже нет проблем, ставим
локаль рута в ru_RU.koi8r
2. Сделать соотв. настройку где-нибудь в /etc/sysconfig/blabla или
использовать какую-нибудь подходящую. Этот тоже можно сделать по-разному:
2.1. Обеспечить вычитку настройки и установку нужной локали при запуске
программ, осуществляющих аутентификацию пользователя.
2.2. Сделать вычитку настройки внутри pam-модуля и использовать
указанную там локаль при проврке имени.
Такой вопрос: какой вариант лучше и почему?
Подробная информация о списке рассылки devel