
신규 사용자에 대한 규칙을 설정하려고 합니다.
/etc/adduser.conf
다음 줄을 추가하여 파일 을 변경했습니다 .
NAME_REGEX="[A-Z]{1}[a-z]{5,9}$"
하지만 그 이후에는 시스템이 어떤 사용자도 허용하지 않습니다.. 항상 NAME_REGEX
in과 일치하지 않는다고 말합니다 /etc/adduser.conf
!
해당 줄에 주석을 달면 모든 사용자가 허용되지만 나 역시 그것을 원하지 않습니다! 모든 사용자에게 다음 정책이 적용되기를 바랍니다.
CAPS-ON-Letter로 시작해야 합니다.
사용자 이름은 최소 5자, 최대 9자여야 합니다. 예를 들어. "Newuser"는 허용되어야 합니다. "newuser"는 허용되지 않으며 "Hereisanewuser"도 허용되지 않습니다!
어떻게 진행해야 하나요?
답변1
위의 정규식 중 몇 가지를 NAME_REGEX
성공하지 못한 채 테스트한 후(html 코드는 \
적어도 일부 문자를 숨기고 있음) 다음과 같이 마침표 기호를 포함하여 적절하고 작동하는 정규식을 작성했습니다.
NAME_REGEX="^[a-z][-a-z0-9_\.]*\$?$"
이는 다음을 의미합니다. 로 시작하고 a-z
그 뒤에 대시, 밑줄 또는 마침표가 여러 개 올 수 a-z
있으며 0-9
선택 사항으로 끝날 수 있습니다 $
.
(일부 데비안 기반 배포판의 adduser.conf
파일 에 있는 기본 주석 처리 구성 줄에도 $
구문이 잘못되어 있다는 점 \$
에 유의하십시오 \$?$
.)
답변2
이것을 사용하십시오:
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}$"
답변3
이미 정답이 있으며 제가 제공할 답변은 결국 다른 답변이 이미 제안한 작업을 정확히 수행하도록 제안하므로 기술적으로 이것은 중복이지만 설명을 제공하는 것이 여기에서 더 낫다고 생각합니다.
NAME_REGEX="[A-Z]{1}[a-z]{5,9}$"
이 정규식은 마지막 부분이 대문자로 시작하는 6-10자 길이의 하위 문자열인 모든 문자열과 일치하므로 "usErname", "USErname", "12Ername"과 같은 문자열과 일치합니다.
이것이 당신이 기대하는 것이 아니라는 사실을 제쳐두고, 어떤 사용자 이름도 받아들여지지 않는다는 사실은 아마도 (그리고 아마 미안하지만,/etc/adduser.conf
매우 잘 문서화되어 있지 않습니다) 정규식은 시작과 끝 모두에 고정되어야 하기 때문입니다(다른 가능성은 항상 위 기준과 일치하지 않는 사용자 이름을 사용하여 테스트해 왔기 때문입니다).
따라서 이미 제안한 대로 먼저 문자열의 시작 부분을 고정합니다.
NAME_REGEX="^[A-Z]{1}[a-z]{5,9}$"
{1}
그런 다음 문자 클래스 뒤에 있는 발생 횟수 지정자를 제거할 수 있습니다 [A-Z]
. 기본적으로 문자 클래스는 단 한 번의 발생과 일치하기 때문입니다.
NAME_REGEX="^[A-Z][a-z]{5,9}$"
그런 다음 5~9자 길이의 문자열을 허용하려면 발생 횟수 지정자의 최소 및 최대 발생 횟수를 and {5,9}
로 줄여야 합니다.4
8
NAME_REGEX="^[A-Z][a-z]{4,8}$"