adduser.conf NAME_REGEX не работает

Я пытаюсь установить правило для новых пользователей.

Я изменил файл /etc/adduser.conf, добавив строку:

NAME_REGEX="[A-Z]{1}[a-z]{5,9}$"

, но после этого система не принимает ни одного пользователя .. всегда говорит, что он не соответствует NAME_REGEX в /etc/adduser.conf!

Когда я комментирую строку, она принимает любого пользователя, но я и этого не хочу! Я хочу, чтобы у всех пользователей была следующая политика:

  1. должны начинаться с буквы CAPS-ON-

  2. Имя пользователя должно состоять минимум из 5 букв и максимум 9 букв. например «Newuser» должен быть принят, «newuser» нет и «Hereisanewuser» тоже!

Как мне поступить?

2
задан 25 May 2015 в 21:02

4 ответа

Используйте это:

NAME_REGEX="^[A-Z][[:alpha:]]{4,8}$"

Это будет соответствовать [A-Z] в начале имени и их, имя может содержать любые буквенные символы т.е. [A-Za-z], и общие символы были бы между 5 - 9.

, С другой стороны, если Вы хотите только строчные буквы после первого верхнего регистра:

NAME_REGEX="^[A-Z][a-z]{4,8}$"

, Кроме того, если Вы хотите какое-либо число или кого-либо верхнего/строчного (использующий классы символов):

NAME_REGEX="^[A-Z]([[:alpha:]]|[[:digit:]]){4,8}$"

Используя диапазоны:

NAME_REGEX="^[A-Z]([A-Za-z]|[0-9]){4,8}$"
0
ответ дан 25 May 2015 в 21:02

Уже существуют корректные ответы, и ответ, который я собираюсь предоставить, предлагает в конце сделать точно, что другие ответы предложили уже сделать, так технически это - дубликат, но я думаю, что для предоставления объяснения это лучше здесь.

NAME_REGEX="[A-Z]{1}[a-z]{5,9}$"

Этот regex соответствует любой строке, последняя часть которой является символьной длинной подстрокой 6-10, запускающейся с прописной буквы, таким образом, это соответствует строкам, таким как "имя пользователя", "Имя пользователя", "12Ername".

Не принятие во внимание того, что это не что-то, которое Вы ожидаете, то, что никакое имя пользователя не принимается, вероятно (и жаль о, вероятно, но /etc/adduser.conf очень плохо документируется ) из-за того, что regex должен быть привязан и в запуске и в конце (другая возможность, являющаяся Вами являющийся всегда тестирующими именами пользователей использования, не соответствующими вышеупомянутому критериуму).

Поэтому, как это уже было предположено, первая привязка запуск строки:

NAME_REGEX="^[A-Z]{1}[a-z]{5,9}$"

Тогда можно удалить количество спецификатора происшествий {1} после класса символов [A-Z], так как по умолчанию класс символов соответствует только одному происшествию:

NAME_REGEX="^[A-Z][a-z]{5,9}$"

Тогда необходимо постепенно уменьшить минимальное и максимальное количество происшествий в количестве спецификатора происшествий {5,9} к 4 и 8, так как Вы хотите принять строки, которые являются 5-9 символами долго:

NAME_REGEX="^[A-Z][a-z]{4,8}$"
0
ответ дан 25 May 2015 в 21:02

Протестированный это и это работают.

NAME_REGEX="^[A-Z][a-z]{4,8}$"

подобный: regex-to-check-if-the-first-character-is-uppercase

0
ответ дан 25 May 2015 в 21:02

После тестирования нескольких из вышеупомянутых регулярных выражений для NAME_REGEX без успеха (HTML-код скрывает некоторых \ символы, по крайней мере), мне удалось записать надлежащий и рабочий включая символ периода, точно так же, как это:

NAME_REGEX="^[a-z][-a-z0-9_\.]*\$?$"

Это означает: Начать a-z, сопровождаемый любым количеством тире или a-z или 0-9 или символы нижнего подчеркивания или периоды, и могут быть закончены дополнительным $.

(Обратите внимание, что даже значение по умолчанию прокомментировало строку конфигурации в некоторых находящихся в Debian дистрибутивах adduser.conf файл, имейте $ синтаксис неправильно, просто \$ вместо \$?$).

1
ответ дан 26 May 2015 в 07:02
  • 1
    @JKandy-drew это показывало какие-либо ошибки, когда Вы пытались удалить файл? – dennisfen 25 August 2016 в 03:25

Другие вопросы по тегам:

Похожие вопросы: