Bug 9202

Summary: dot in login names
Product: Sisyphus Reporter: Nick S. Grechukh <gns>
Component: shadow-utilsAssignee: Mikhail Efremov <sem>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: admaks, aen, anubix, arc, bikr, boris, cas, dd1email, enp, erthad, evg, glebfm, hiddenman, kharpost, lav, ldv, mike, php-coder, rider, rinatshigapov, sem, shaba, ulug1, vinogradov.mail, vvk, zerg
Version: unstableKeywords: usability
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 22044    
Attachments:
Description Flags
патч
none
good name none

Description Nick S. Grechukh 2006-03-07 20:19:08 MSK
useradd не позволяет добавить пользователя с точкой в имени 
 
Steps to Reproduce:
1.useradd n.grechukh 
 
Actual Results:  
useradd: invalid user name 'n.grechukh'
Comment 1 Nick S. Grechukh 2006-03-07 20:20:13 MSK
Created attachment 1419 [details]
патч
Comment 2 Dmitry V. Levin 2006-03-07 20:27:41 MSK
Есть ещё много других символов, которые useradd не позволяет использовать в
имени создаваемого аккаунта.  Вы предлагаете разрешить все?
Comment 3 Andrew Kornilov 2006-03-07 20:38:37 MSK
1. Использование точки в логине достаточно распорстраненное явление (кстати,
распорстраненные же _ и -  в useradd разрешены)
2. От использования таких логинов нам не встретилась никакой проблемы пока. Даже
chown красиво распознает login и login.group при наличии точки в login и т.п. То
есть проблема пока только в useradd сотоварищи (кстати, и инстяллятор наш имеет
эту же проблему из-за вызова useradd внутри себя)
3. В других дистрибутивах это давно работает.
4. Ну правда, очень раздражает делать user/groupadd akornilov и потом в
нескольких местах изменять это. 
Comment 4 Dmitry V. Levin 2006-03-07 20:44:35 MSK
2hiddenman: а если в системе есть пользователи a, a.kornilov и группа kornilov,
то насколько предсказуемым будет поведение chown a.kornilov file.  Вы думаете,
все научились использовать ":"?
Comment 5 Nick S. Grechukh 2006-03-07 20:48:49 MSK
http://lists.debian.org/debian-edu/2004/11/msg00265.html

иногда рекомендубют ограничиться '[a-z][a-z0-9]+' only, но у нас разрешены _ и -
Comment 6 Nick S. Grechukh 2006-03-07 20:52:00 MSK
(In reply to comment #4)
> 2hiddenman: а если в системе есть пользователи a, a.kornilov и группа kornilov,
> то насколько предсказуемым будет поведение chown a.kornilov file. 
владельцем становится пользователь a.kornilov. 

> Вы думаете, все научились использовать ":"?
думаю, те кому это нужно - научились

Comment 7 Andrew Kornilov 2006-03-07 20:53:17 MSK
(In reply to comment #4)
> 2hiddenman: а если в системе есть пользователи a, a.kornilov и группа kornilov,
> то насколько предсказуемым будет поведение chown a.kornilov file.  Вы думаете,
> все научились использовать ":"?

Мне понравилось, как вот тут написано: 

http://unix.derkeiler.com/Newsgroups/comp.sys.hp.hpux/2003-12/0016.html

Это не аргумент, сам же понимаешь :)
Comment 8 Andrew Kornilov 2006-06-29 12:29:54 MSD
Так что будем делать с этой точкой?
Comment 9 Andrew Kornilov 2006-06-29 12:32:29 MSD
Предлагаю исправить chown так, чтобы нельзя было использовать точку в качестве
разделителя логина и группы, если мы так заботимся о неправильных админах :)
Comment 10 Andrew Kornilov 2006-10-25 12:11:07 MSD
Более того, в RH-образных дистрибутивах (e.g CentOS) можно создавать имена
пользователей в upper case и даже в mixed case.
#id TEST
uid=511(TEST) gid=512(TEST) groups=512(TEST)

#id TeSt
uid=512(TeSt) gid=513(TeSt) groups=513(TeSt)
Comment 11 Dmitry V. Levin 2008-01-20 00:22:44 MSK
(In reply to comment #10)
> Более того, в RH-образных дистрибутивах (e.g CentOS) можно создавать имена
> пользователей в upper case и даже в mixed case.
> #id TEST
> uid=511(TEST) gid=512(TEST) groups=512(TEST)
> 
> #id TeSt
> uid=512(TeSt) gid=513(TeSt) groups=513(TeSt)

Зачем нам создавать лишние проблемы?
Comment 12 Andrew Kornilov 2008-01-21 08:02:58 MSK
(In reply to comment #11)
> > uid=511(TEST) gid=512(TEST) groups=512(TEST)
> > #id TeSt
> > uid=512(TeSt) gid=513(TeSt) groups=513(TeSt)
> 
> Зачем нам создавать лишние проблемы?
Проблемы сами по себе не возникнут, их еще постараться создать надо. А вот
ограничение возможностей есть, это факт. 
Почему я в win32 могу хоть "Корнилов Андрей Владимирович" создать, а тут даже
точку нельзя? Иногда очень хочется. 
По крайней мере, в данном случае можно столкнуться с тем, что не будет
нормального взаимодействия между ALT-ом и другими дистрибутивами в гетерогенной
среде. Точки в enterprise любят.
Давайте проголосуем. vote в нашей bugzilla работает?
Comment 13 Mikhail Gusarov 2008-01-21 08:49:23 MSK
>Давайте проголосуем. vote в нашей bugzilla работает?

Работают, а толку?

Comment 14 Andrew Kornilov 2008-01-21 09:45:16 MSK
(In reply to comment #13)
> >Давайте проголосуем. vote в нашей bugzilla работает?
> 
> Работают, а толку?
Это ты к чему? Голосование у нас не влияет на принятие решения?
Comment 15 Dmitry V. Levin 2008-01-21 13:25:49 MSK
(In reply to comment #14)
> (In reply to comment #13)
> > >Давайте проголосуем. vote в нашей bugzilla работает?
> > 
> > Работают, а толку?
> Это ты к чему? Голосование у нас не влияет на принятие решения?

Конечно, нет.  Обычно к голосованию пытаются прибегать, когда заканчивается
аргументация.
Comment 16 Andrew Kornilov 2008-01-21 14:31:15 MSK
> > Это ты к чему? Голосование у нас не влияет на принятие решения?
> 
> Конечно, нет.  Обычно к голосованию пытаются прибегать, когда заканчивается
> аргументация.
Ну у нас с Колей (gns) были аргументы и факты. Контраргументы слабее, imho.

Comment 17 Michael Shigorin 2009-11-04 02:01:24 MSK
См. bug #22044
Comment 18 Rinat Bikov 2009-11-04 23:09:58 MSK
А чем ещё мешают заглавные буквы?
Это чисто из-за почтовых программ?
Можно же сделать так, чтобы заглавные буквы принимались, а уникальность проверять в нижнем регистре.
Comment 19 Rinat Shigapov 2009-11-05 07:58:14 MSK
Ещё одно применение имени с точкой - брать в качестве имени пользователя имя домена - удобно для динамического хостинга.

Читал, что старые версии useradd в RedHat точку поддерживали.
Comment 20 Arc 2009-12-08 19:28:46 MSK
может кто-то скажет что NT домен на самбе -- зло
но там
очень уместно смотрятся имена с точкой.
ivanov.i и ivanov.g
гораздо информативнее 
ivanov1 и ivanov
Comment 21 Nick S. Grechukh 2009-12-08 20:01:55 MSK
The BSD syntax [of chown] user[. group] was changed to user[: group] in this volume of POSIX.1-2008 because the <period> is a valid character in login names (as specified by the Base Definitions volume of POSIX.1-2008, login names consist of characters in the portable filename character set). The <colon> character was chosen as the replacement for the <period> character because it would never be allowed as a character in a user name or group name on historical implementations.

http://www.opengroup.org/onlinepubs/9699919799/utilities/chown.html
Comment 22 Michael Shigorin 2009-12-08 21:36:32 MSK
Ур-ра!  Дима, сдавайся :)
Comment 23 Andrey Cherepanov 2010-06-21 16:15:32 MSD
Предлагаю забить. Дима, когда можно ожидать?
Comment 24 arc@altlinux.org 2010-06-21 18:17:54 MSD
(В ответ на комментарий №23)
> Предлагаю забить. Дима, когда можно ожидать?
В смысле? В кентавре будут валидны имена пользователя с точкой?
Гуд!
Comment 25 Valery Inozemtsev 2010-06-30 17:07:06 MSD
Created attachment 4441 [details]
good name

мне недавно пришлось делать вот такой патчь, во всяких debian/ubuntu заглавные буквы в имени разрешены
Comment 26 Andrey Cherepanov 2010-11-06 17:32:35 MSK
Не тянет на distro-blocker
Comment 27 Zerg 2010-11-21 17:40:02 MSK
(В ответ на комментарий №4)
> Вы думаете, все научились использовать ":"?
Если "." нестандартно, то его можно вырезать, тогда никто не ошибется.
Comment 28 AEN 2011-05-19 06:02:19 MSK
Может, стоит поправить по случаю нового бранча?
Comment 29 Andrey Cherepanov 2011-07-19 14:11:37 MSK
(В ответ на комментарий №28)
> Может, стоит поправить по случаю нового бранча?
Судя по тому, что была снята зависимость на 23155, не в этом бранче.
Comment 30 Alexey Shabalin 2012-10-25 22:28:18 MSK
А в новом бранче увидим?
Comment 31 Michael Shigorin 2012-10-26 00:58:57 MSK
Да, народ недоумевал...
Comment 32 Andrew Kornilov 2012-10-26 01:35:31 MSK
Это ж надо так не любить точку. 6,5 лет назад мы с Колей запостили баг, а воз и ныне там. Дмитрий, сознайтесь, в чем истинная причина? :-)
Comment 33 Oleg 2012-10-26 15:08:09 MSK
Тоже задело. Тоже имена пользователей с точкой. Причем несколько лет, как они берутся из лдап, все работает. Система может работать с именами с точками замечательно. Вот только создать не может. Может пора уже?
Comment 34 Evgenii Terechkov 2016-04-25 09:38:32 MSK
Как дела с этим багом? Оба патча давно пора приложить.
Comment 35 Sergey V Turchin 2016-04-25 11:02:05 MSK
(В ответ на комментарий №4)
> думаете, все научились использовать ":"?
Я вообще до этого бага не знал, что там можно что-то другое использовать. :-)
Comment 36 Alexey Shabalin 2016-04-25 13:57:42 MSK
извиняюсь, может у меня как раз с этим связаны проблемы?
Проблема следующая. Я использую sssd для логина в домене AD. Имя пользователя с сточкой - a.shabalin@domain.com. Настроены pam и nss на использование sssd. Периодически система теряет primary group. Т.е у пользователя a.shabalin есть GID, но не ресолвится в имя "domain users". Остановка sssd, удаление кэша, старт sssd помогают на некоторое время. Случайное время от 2 часов до 3-4 дней.
Comment 37 Mikhail Efremov 2017-03-07 18:56:02 MSK
(In reply to comment #34)
> Как дела с этим багом? Оба патча давно пора приложить.

Чтобы разрешить точку, нужно для начала запатчить chown, чтобы он ругался на использование точки. После чего подождать хотя бы пару лет, выявляя и исправляя скрипты, где используется точка. Когда наступит уверенность, что таких скриптов больше не осталось, то можно выключить использование точки в chown и разрешить в именах пользователей.
Я не вижу, чтобы кто-нибудь собирался все это делать.

(In reply to comment #36)
> извиняюсь, может у меня как раз с этим связаны проблемы?
Вряд ли sssd использует shadow-utils в runtime.
Comment 38 Andrew Kornilov 2017-03-07 19:50:51 MSK
(В ответ на комментарий №37)

> Чтобы разрешить точку, нужно для начала запатчить chown, чтобы он ругался на
> использование точки. После чего подождать хотя бы пару лет, выявляя и исправляя
> скрипты, где используется точка. Когда наступит уверенность, что таких скриптов
> больше не осталось, то можно выключить использование точки в chown и разрешить
> в именах пользователей.
> Я не вижу, чтобы кто-нибудь собирался все это делать.

Опять откопали стюардессу? :-)
Я вообще таких скриптов в жизни не встречал, разве что в каком-то энтерпрайзе попадается.   Тут дилемма в том, что пользователей все и так делают с точкой (RH-based уже 10 лет как работают с точкой), просто вручную редактирую или через други утилиты и всё окружение работает.  Только useradd не принимает точку, поэтому приходится его обходить всем.
Точка - это вообще самый настоящий энтерпрайз, они её очень любят.
Comment 39 Mikhail Efremov 2017-03-23 03:06:28 MSK
(В ответ на комментарий №38)
> Я вообще таких скриптов в жизни не встречал, разве что в каком-то энтерпрайзе
> попадается.

Нет никаких гарантий, что таких скриптов нет. Вообще мне смутно припоминается, что я где-то у нас видел.

> Тут дилемма в том, что пользователей все и так делают с точкой
> (RH-based уже 10 лет как работают с точкой), просто вручную редактирую или
> через други утилиты и всё окружение работает.  Только useradd не принимает
> точку, поэтому приходится его обходить всем.
> Точка - это вообще самый настоящий энтерпрайз, они её очень любят.

Я не думаю, что нас должны волновать проблемы RH-based дистрибутивов. И если у нас тоже кто-то хочет создать себе потенциальные проблемы, то это его дело. Создавать же undefined behavior "из коробки" - точно плохая идея.
В Дебиане, кстати, с именами пользователей вообще энтерпрайз-рай, там почти ничего не запрещено. И создать пользователя с именем типа $(reboot), например, ничего не мешает. А потом неосторожный eval в каком-нибудь скрипте и привет.
Comment 40 Alexey Shabalin 2019-10-17 21:04:14 MSK
(В ответ на комментарий №11)
> (In reply to comment #10)
> > Более того, в RH-образных дистрибутивах (e.g CentOS) можно создавать имена
> > пользователей в upper case и даже в mixed case.
> > #id TEST
> > uid=511(TEST) gid=512(TEST) groups=512(TEST)
> > 
> > #id TeSt
> > uid=512(TeSt) gid=513(TeSt) groups=513(TeSt)
> 
> Зачем нам создавать лишние проблемы?

Сейчас проблемы на ровном месте создаем мы для наших пользователей.
Во многих компаниях есть свои политики именования пользователей, которые мы не можем удовлетворить.

Например сейчас пришел запрос из Китая. У них это бизнес необходимость. У них все сложно с именами. Какой нибудь(просто придумал из головы) Ci Py - логично иметь логин CiPy, потому что cipy может означать и C Ipy, и Cip Y.

Еще раз прошу вернуться к рассмотрению этой баги.
Comment 41 Alexey Shabalin 2019-10-18 00:24:18 MSK
Пример с FooBar будет наверно понятней :)
foobar можно интерпретировать как Fo Obar, Foob Ar.
Comment 42 Mikhail Efremov 2019-10-18 19:50:55 MSK
(В ответ на комментарий №41)
> Пример с FooBar будет наверно понятней :)
> foobar можно интерпретировать как Fo Obar, Foob Ar.

fo_obar и foob-ar не вариант?
Comment 43 Anton Farygin 2019-10-18 19:52:52 MSK
(В ответ на комментарий №42)
> (В ответ на комментарий №41)
> > Пример с FooBar будет наверно понятней :)
> > foobar можно интерпретировать как Fo Obar, Foob Ar.
> 
> fo_obar и foob-ar не вариант?

См. выше про принятые в компаниях правила именования пользователей. Врятли их будет кто-то менять под нас, скорее наоборот.
Comment 44 Alexey Shabalin 2019-10-19 15:08:42 MSK
(В ответ на комментарий №42)
> (В ответ на комментарий №41)
> > Пример с FooBar будет наверно понятней :)
> > foobar можно интерпретировать как Fo Obar, Foob Ar.
> 
> fo_obar и foob-ar не вариант?

FooBar не вариант?

Цитата:
Ван Синь-ши (Wang Hsin-shih), теперь уже бывший глава подразделения разработчиков Huawei по технологиям

Так что не вариант. "-" легитимный символ в их именах.

И ещё раз, на предприятиях существуют свои правила и руководящие документы. ALT не должен навязывать свои ограничения.
Comment 45 Vitaly Lipatov 2019-10-19 15:19:06 MSK
(В ответ на комментарий №44)
...
> не должен навязывать свои ограничения.
Я бы сказал, что должен быть механизм установки ограничений, но не в коде отдельных утилит.
Ограничения должны настраиваться в pam и в домене, я так понимаю.
Comment 46 Mikhail Efremov 2019-11-01 19:40:21 MSK
В task #240146 собирается пакет, в котором можно задать регэксп для проверки имени пользователя/группы. Там не только точку, там почти что угодно можно разрешить. Заинтересованных прошу тестировать.
Comment 47 Repository Robot 2019-11-07 18:51:44 MSK
shadow-1:4.5-alt7 -> sisyphus:

Wed Nov 06 2019 Mikhail Efremov <sem@altlinux> 1:4.5-alt7
- valid_field: Check that characters are ASCII.
- login.defs: Add SAFE_PWDB_FIELDS variable.
- man: Add SAFE_PWDB_FIELDS description.
- lib: Add SAFE_PWDB_FIELDS variable.
- useradd,usermod: Use valid_field() to check fields.

Fri Nov 01 2019 Mikhail Efremov <sem@altlinux> 1:4.5-alt6
- Use epoch instead of serial.
- login.defs: Add REGEXP_NAME variable.
- man: Add REGEXP_NAME description.
- pwck,grpck: Use strcasecmp() to check names.
- libmisc: Don't allow leading digits in the names with regexp too.
- utils: Check that user/group is unique.
- libmisc: Allow names to be verified by regexp (closes: #9202).
- Fix build with gcc-9.