useradd не позволяет добавить пользователя с точкой в имени Steps to Reproduce: 1.useradd n.grechukh Actual Results: useradd: invalid user name 'n.grechukh'
Created attachment 1419 [details] патч
Есть ещё много других символов, которые useradd не позволяет использовать в имени создаваемого аккаунта. Вы предлагаете разрешить все?
1. Использование точки в логине достаточно распорстраненное явление (кстати, распорстраненные же _ и - в useradd разрешены) 2. От использования таких логинов нам не встретилась никакой проблемы пока. Даже chown красиво распознает login и login.group при наличии точки в login и т.п. То есть проблема пока только в useradd сотоварищи (кстати, и инстяллятор наш имеет эту же проблему из-за вызова useradd внутри себя) 3. В других дистрибутивах это давно работает. 4. Ну правда, очень раздражает делать user/groupadd akornilov и потом в нескольких местах изменять это.
2hiddenman: а если в системе есть пользователи a, a.kornilov и группа kornilov, то насколько предсказуемым будет поведение chown a.kornilov file. Вы думаете, все научились использовать ":"?
http://lists.debian.org/debian-edu/2004/11/msg00265.html иногда рекомендубют ограничиться '[a-z][a-z0-9]+' only, но у нас разрешены _ и -
(In reply to comment #4) > 2hiddenman: а если в системе есть пользователи a, a.kornilov и группа kornilov, > то насколько предсказуемым будет поведение chown a.kornilov file. владельцем становится пользователь a.kornilov. > Вы думаете, все научились использовать ":"? думаю, те кому это нужно - научились
(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 Это не аргумент, сам же понимаешь :)
Так что будем делать с этой точкой?
Предлагаю исправить chown так, чтобы нельзя было использовать точку в качестве разделителя логина и группы, если мы так заботимся о неправильных админах :)
Более того, в 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)
(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) Зачем нам создавать лишние проблемы?
(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 работает?
>Давайте проголосуем. vote в нашей bugzilla работает? Работают, а толку?
(In reply to comment #13) > >Давайте проголосуем. vote в нашей bugzilla работает? > > Работают, а толку? Это ты к чему? Голосование у нас не влияет на принятие решения?
(In reply to comment #14) > (In reply to comment #13) > > >Давайте проголосуем. vote в нашей bugzilla работает? > > > > Работают, а толку? > Это ты к чему? Голосование у нас не влияет на принятие решения? Конечно, нет. Обычно к голосованию пытаются прибегать, когда заканчивается аргументация.
> > Это ты к чему? Голосование у нас не влияет на принятие решения? > > Конечно, нет. Обычно к голосованию пытаются прибегать, когда заканчивается > аргументация. Ну у нас с Колей (gns) были аргументы и факты. Контраргументы слабее, imho.
См. bug #22044
А чем ещё мешают заглавные буквы? Это чисто из-за почтовых программ? Можно же сделать так, чтобы заглавные буквы принимались, а уникальность проверять в нижнем регистре.
Ещё одно применение имени с точкой - брать в качестве имени пользователя имя домена - удобно для динамического хостинга. Читал, что старые версии useradd в RedHat точку поддерживали.
может кто-то скажет что NT домен на самбе -- зло но там очень уместно смотрятся имена с точкой. ivanov.i и ivanov.g гораздо информативнее ivanov1 и ivanov
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
Ур-ра! Дима, сдавайся :)
Предлагаю забить. Дима, когда можно ожидать?
(В ответ на комментарий №23) > Предлагаю забить. Дима, когда можно ожидать? В смысле? В кентавре будут валидны имена пользователя с точкой? Гуд!
Created attachment 4441 [details] good name мне недавно пришлось делать вот такой патчь, во всяких debian/ubuntu заглавные буквы в имени разрешены
Не тянет на distro-blocker
(В ответ на комментарий №4) > Вы думаете, все научились использовать ":"? Если "." нестандартно, то его можно вырезать, тогда никто не ошибется.
Может, стоит поправить по случаю нового бранча?
(В ответ на комментарий №28) > Может, стоит поправить по случаю нового бранча? Судя по тому, что была снята зависимость на 23155, не в этом бранче.
А в новом бранче увидим?
Да, народ недоумевал...
Это ж надо так не любить точку. 6,5 лет назад мы с Колей запостили баг, а воз и ныне там. Дмитрий, сознайтесь, в чем истинная причина? :-)
Тоже задело. Тоже имена пользователей с точкой. Причем несколько лет, как они берутся из лдап, все работает. Система может работать с именами с точками замечательно. Вот только создать не может. Может пора уже?
Как дела с этим багом? Оба патча давно пора приложить.
(В ответ на комментарий №4) > думаете, все научились использовать ":"? Я вообще до этого бага не знал, что там можно что-то другое использовать. :-)
извиняюсь, может у меня как раз с этим связаны проблемы? Проблема следующая. Я использую sssd для логина в домене AD. Имя пользователя с сточкой - a.shabalin@domain.com. Настроены pam и nss на использование sssd. Периодически система теряет primary group. Т.е у пользователя a.shabalin есть GID, но не ресолвится в имя "domain users". Остановка sssd, удаление кэша, старт sssd помогают на некоторое время. Случайное время от 2 часов до 3-4 дней.
(In reply to comment #34) > Как дела с этим багом? Оба патча давно пора приложить. Чтобы разрешить точку, нужно для начала запатчить chown, чтобы он ругался на использование точки. После чего подождать хотя бы пару лет, выявляя и исправляя скрипты, где используется точка. Когда наступит уверенность, что таких скриптов больше не осталось, то можно выключить использование точки в chown и разрешить в именах пользователей. Я не вижу, чтобы кто-нибудь собирался все это делать. (In reply to comment #36) > извиняюсь, может у меня как раз с этим связаны проблемы? Вряд ли sssd использует shadow-utils в runtime.
(В ответ на комментарий №37) > Чтобы разрешить точку, нужно для начала запатчить chown, чтобы он ругался на > использование точки. После чего подождать хотя бы пару лет, выявляя и исправляя > скрипты, где используется точка. Когда наступит уверенность, что таких скриптов > больше не осталось, то можно выключить использование точки в chown и разрешить > в именах пользователей. > Я не вижу, чтобы кто-нибудь собирался все это делать. Опять откопали стюардессу? :-) Я вообще таких скриптов в жизни не встречал, разве что в каком-то энтерпрайзе попадается. Тут дилемма в том, что пользователей все и так делают с точкой (RH-based уже 10 лет как работают с точкой), просто вручную редактирую или через други утилиты и всё окружение работает. Только useradd не принимает точку, поэтому приходится его обходить всем. Точка - это вообще самый настоящий энтерпрайз, они её очень любят.
(В ответ на комментарий №38) > Я вообще таких скриптов в жизни не встречал, разве что в каком-то энтерпрайзе > попадается. Нет никаких гарантий, что таких скриптов нет. Вообще мне смутно припоминается, что я где-то у нас видел. > Тут дилемма в том, что пользователей все и так делают с точкой > (RH-based уже 10 лет как работают с точкой), просто вручную редактирую или > через други утилиты и всё окружение работает. Только useradd не принимает > точку, поэтому приходится его обходить всем. > Точка - это вообще самый настоящий энтерпрайз, они её очень любят. Я не думаю, что нас должны волновать проблемы RH-based дистрибутивов. И если у нас тоже кто-то хочет создать себе потенциальные проблемы, то это его дело. Создавать же undefined behavior "из коробки" - точно плохая идея. В Дебиане, кстати, с именами пользователей вообще энтерпрайз-рай, там почти ничего не запрещено. И создать пользователя с именем типа $(reboot), например, ничего не мешает. А потом неосторожный eval в каком-нибудь скрипте и привет.
(В ответ на комментарий №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. Еще раз прошу вернуться к рассмотрению этой баги.
Пример с FooBar будет наверно понятней :) foobar можно интерпретировать как Fo Obar, Foob Ar.
(В ответ на комментарий №41) > Пример с FooBar будет наверно понятней :) > foobar можно интерпретировать как Fo Obar, Foob Ar. fo_obar и foob-ar не вариант?
(В ответ на комментарий №42) > (В ответ на комментарий №41) > > Пример с FooBar будет наверно понятней :) > > foobar можно интерпретировать как Fo Obar, Foob Ar. > > fo_obar и foob-ar не вариант? См. выше про принятые в компаниях правила именования пользователей. Врятли их будет кто-то менять под нас, скорее наоборот.
(В ответ на комментарий №42) > (В ответ на комментарий №41) > > Пример с FooBar будет наверно понятней :) > > foobar можно интерпретировать как Fo Obar, Foob Ar. > > fo_obar и foob-ar не вариант? FooBar не вариант? Цитата: Ван Синь-ши (Wang Hsin-shih), теперь уже бывший глава подразделения разработчиков Huawei по технологиям Так что не вариант. "-" легитимный символ в их именах. И ещё раз, на предприятиях существуют свои правила и руководящие документы. ALT не должен навязывать свои ограничения.
(В ответ на комментарий №44) ... > не должен навязывать свои ограничения. Я бы сказал, что должен быть механизм установки ограничений, но не в коде отдельных утилит. Ограничения должны настраиваться в pam и в домене, я так понимаю.
В task #240146 собирается пакет, в котором можно задать регэксп для проверки имени пользователя/группы. Там не только точку, там почти что угодно можно разрешить. Заинтересованных прошу тестировать.
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.