[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