Bug 33043

Summary: Разрешить имена, начинающиеся c цифры
Product: Sisyphus Reporter: Evgeniy Korneechev <ekorneechev>
Component: pam0_tcbAssignee: Dmitry V. Levin <ldv>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: minor    
Priority: P3 CC: alex, cas, evg, ldv, mike, nbr, placeholder, rider, sin
Version: unstableKeywords: RS
Hardware: all   
OS: Linux   

Description Evgeniy Korneechev 2017-01-25 11:22:28 MSK
Проблема такая:
BaseAlt Server 8.1, машина введена в домен https://www.altlinux.org/SSSD/AD
В АД около 10000 пользователей, их логины имеют формат пятизначного числа,
например 12345 (ну или 12345@company.local).

Если пытаться авторизоваться через lightdm - ошибка "Не удается выполнить вход"
через Ctrl+Alt+F2 - сразу после ввода логина ошибка "Login incorrect"
$ su - 12345
su: Authentication token manipulation error

Однако, если пытаться зайти по ssh на данный комп под такой УЗ - то все ОК:
$ ssh 123456@localhost
123456@localhost's password: 
[123456@basealt8-fresh ~]$

Может есть какие варианты для снятия ограничений с имен пользователей?

Про то, что это плохо - понимаем (совпадение UID и логина, проблемы в программах, которые основывают свою логику на анализе введенных данных, если введены цифры - значит это UID, GID и т.п.).

Однако менять имена всех 10000 УЗ в АД - не вариант...
Comment 1 Evgeniy Korneechev 2017-01-25 11:24:43 MSK
Воркэраунд такой:
$ su - company.local\\12345
$ getent passwd company.local\\12345
12345:*:10532:10000:12345:/home/COMPANY/12345:/bin/bash

Для Ctrl+Alt+F*:
Login: company.local\12345
Comment 2 Anton Farygin 2017-01-25 12:41:16 MSK
Женя, а в каких приложениях используется вход в AD, где нужна такая авторизация ?
это только lightdm ?
может быть в качестве варианта будет возможность настройки lightdm для авторизации исключельно в AD с жёсткой привязкой к домену ?
Comment 3 Evgeniy Korneechev 2017-01-25 13:38:30 MSK
(В ответ на комментарий №2)
> Женя, а в каких приложениях используется вход в AD, где нужна такая авторизация
> это только lightdm ?
Например еще, авторизация в dovecot, с использованием доменных учетных записей (по емейл, привязанному в АД, вход выполняется)

> может быть в качестве варианта будет возможность настройки lightdm для
> авторизации исключельно в AD с жёсткой привязкой к домену ?
А если домен будет недоступен и надо будет войти в иксы локальным админом?
Comment 4 Anton Farygin 2017-01-25 13:45:32 MSK
Хорошо, не с жёсткой привязкой ;)
А авторизация в dovecot не по тикетам идёт ?
Comment 5 Evgeniy Korneechev 2017-01-25 15:51:53 MSK
(В ответ на комментарий №4)
> Хорошо, не с жёсткой привязкой ;)
> А авторизация в dovecot не по тикетам идёт ?

Авторизация (БД паролей) настроена на PAM
http://wiki2.dovecot.org/PasswordDatabase/PAM
passdb {
  driver = pam
}
Оттуда видимо дальше sssd, а еще дальше тикеты? Таких подробностей я не знаю...
Comment 6 Evgeniy Korneechev 2017-01-25 17:44:44 MSK
(В ответ на комментарий №2 - из https://bugzilla.altlinux.org/show_bug.cgi?id=13649#c2)
> Проверка, зашитая в pam_tcb (pam_sm_authenticate и pam_sm_chauthtok), явно
> запрещает аутентификацию и смену пароля для аккаунтов, имена которых содержат
> !isalpha символы.

Может как-то можно это "по-быстрому" обойти =) ? (это же оно самое?)
Comment 7 Evgeniy Korneechev 2017-01-25 23:56:44 MSK
(В ответ на комментарий №6)
> > Проверка, зашитая в pam_tcb (pam_sm_authenticate и pam_sm_chauthtok)....
> Может как-то можно это "по-быстрому" обойти =) ?

Решил сам собрать pam0_tcb без данной проверки - тестовое задание #177152.
После обновления пакета из задания авторизация по цифровым логинам заработала, и в lightdm, и в login, и, что самое важное, в dovecot.

Можно же оставить данное задание в "висячем" положении (уж больно удобно решить данный вопрос на большом количестве станций одной командой apt-repo test 177152 pam0_tcb)?
Comment 8 Anton Farygin 2017-01-26 08:01:15 MSK
Нет, не получится - придётся перезапускать время от времени это задание.
Comment 9 Evgeniy Korneechev 2017-01-26 09:00:24 MSK
(В ответ на комментарий №8)
> Нет, не получится - придётся перезапускать время от времени это задание.

Вообще, на первый взгляд достаточно подменить /lib64/security/pam_tcb.so на собранный в этом задании. Либо руками, либо может соберу новый пакет для этой цели.
Comment 10 Anton Farygin 2017-01-26 09:04:56 MSK
Поаккуратнее с этим, проверьте что бы этот пакет не влетал в систему по умолчанию при сборке дистрибутивов и не обновлял существующие системы.
Comment 11 Andrey Cherepanov 2017-01-30 15:24:33 MSK
(В ответ на комментарий №7)
> (В ответ на комментарий №6)
> > > Проверка, зашитая в pam_tcb (pam_sm_authenticate и pam_sm_chauthtok)....
> > Может как-то можно это "по-быстрому" обойти =) ?
> 
> Решил сам собрать pam0_tcb без данной проверки - тестовое задание #177152.
> После обновления пакета из задания авторизация по цифровым логинам заработала,
> и в lightdm, и в login, и, что самое важное, в dovecot.
> 
> Можно же оставить данное задание в "висячем" положении (уж больно удобно решить
> данный вопрос на большом количестве станций одной командой apt-repo test 177152
> pam0_tcb)?
Спасибо! Думаю, правильнее будет сделать опцию включаемой через конфигуратор и документировать эту опцию.
Comment 12 Evgeniy Korneechev 2017-01-30 17:11:02 MSK
Вот такой комментарий есть в исходниках:
* Various libraries at various times have had bugs related to
* '+' or '-' as the first character of a username. Don't take
* any chances here. Require that the username starts with a
* letter.

Может стоит разрешить использовать в качестве первого символа 
в добавок цифру и '_', а не рубить на корню все !isalpha?
Comment 13 Dmitry V. Levin 2017-02-16 02:19:43 MSK
Разрешая числовые имена аккаунтов, вы открываете дорогу к undefined behavior в софте, который оперирует именами и идентификаторами аккаунтов.
Например, если некий аккаунт имеет имя 1000, то априори неизвестен результат операции chown 1000 ФАЙЛ: то ли владельцем ФАЙЛа станет аккаунт по имени 1000, то ли аккаунт с идентификатором 1000.

По этой причине я не рекомендую разрешать числовые имена аккаунтов.

Я сожалею, что pam_tcb оказалось единственным местом в операционной системе, вставшем на вашем пути превращения ОС в тыкву.  Я подумаю, что можно предпринять, чтобы в будущих версиях ОС это было не так просто сделать.