Я пытаюсь установить правило для новых пользователей.
Я изменил файл /etc/adduser.conf
, добавив строку:
NAME_REGEX="[A-Z]{1}[a-z]{5,9}$"
, но после этого система не принимает ни одного пользователя .. всегда говорит, что он не соответствует NAME_REGEX
в /etc/adduser.conf
!
Когда я комментирую строку, она принимает любого пользователя, но я и этого не хочу! Я хочу, чтобы у всех пользователей была следующая политика:
должны начинаться с буквы CAPS-ON-
Имя пользователя должно состоять минимум из 5 букв и максимум 9 букв. например «Newuser» должен быть принят, «newuser» нет и «Hereisanewuser» тоже!
Как мне поступить?
Используйте это:
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}$"
Уже существуют корректные ответы, и ответ, который я собираюсь предоставить, предлагает в конце сделать точно, что другие ответы предложили уже сделать, так технически это - дубликат, но я думаю, что для предоставления объяснения это лучше здесь.
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}$"
Протестированный это и это работают.
NAME_REGEX="^[A-Z][a-z]{4,8}$"
подобный: regex-to-check-if-the-first-character-is-uppercase
После тестирования нескольких из вышеупомянутых регулярных выражений для NAME_REGEX
без успеха (HTML-код скрывает некоторых \
символы, по крайней мере), мне удалось записать надлежащий и рабочий включая символ периода, точно так же, как это:
NAME_REGEX="^[a-z][-a-z0-9_\.]*\$?$"
Это означает: Начать a-z
, сопровождаемый любым количеством тире или a-z
или 0-9
или символы нижнего подчеркивания или периоды, и могут быть закончены дополнительным $
.
(Обратите внимание, что даже значение по умолчанию прокомментировало строку конфигурации в некоторых находящихся в Debian дистрибутивах adduser.conf
файл, имейте $
синтаксис неправильно, просто \$
вместо \$?$
).