Linux의 사용자 이름에 어떤 문자를 사용해야합니까?


39

도메인 이름을 딴 사용자 계정을 만들고 싶습니다. adduser는 사용자 이름이 NAME_REGEX정규식 과 일치해야한다고 불평합니다 .

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

불만없이 useradd를 사용하여 사용자를 추가 할 수 있습니다. 내가 할 수있는 정규 표현식 수정해서는 안하는 이유가 ., -그리고 _?

어떤 문자가 문제를 일으키고 사용자 이름에 허용되지 않아야합니까?

이것이 기본값 NAME_REGEX입니다.

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

1
참고 NAME_REGEX이미 받아들이 -는 첫 번째 문자 아니다만큼.
반지 Ø

왜 추가하지 .않습니까? 이름이 .또는 인 사용자를 고려하십시오 ... 그런 다음 rm해당 사용자의 이름은 ..입니다.
Jon

1
@Jon 그것은 rm사용자를 삭제할 때 사용할 명령이 아니기 때문에 문제 가되지 않습니다. 나는 ..비슷한 이유로 합리적인 이름이 아니라고 동의 하지만 rm그중 하나는 아닙니다.
toon81

답변:


26

제 조언은 기본 NAME_REGEX에서 권장하는 표준을 따르는 것입니다. 실제로 * NIX 아래의 사용자 이름에 거의 모든 것을 넣을 수 있지만 가정하는 라이브러리 코드에 이상한 문제가 발생할 수 있습니다. 지목 사항:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

내 질문 : 특이한 문장 부호를 제거하면 서로 충돌하는 도메인 이름이 많이 있습니까? 예를 들어, 도메인 이름으로 "QUALITY-ASSURANCE"와 QUALITYASSURANCE "가 둘 다 있습니까? 그렇지 않은 경우, 이상한 문자를 제거하고 사용자 이름으로 남은 것을 사용하는 정책을 간단히 채택 할 수 있습니다.

또한 / etc / passwd 정보 에있는 GECOS 필드 의 "실제 이름"섹션을 사용하여 수정되지 않은 원래 도마 인 이름을 저장하면 스크립트가이를 쉽게 추출 할 수 있습니다.


내가 걱정하는 임의의 예기치 않은 버그 부분이 발생합니다. 나는 마침표를 쉽게 제거 할 수는 있지만 여전히 이름 충돌의 가능성은 없지만 문제가 발생할 수 있습니다. 여전히 가능성이 거의 없습니다.
Ed Haber

그래서 내가 사용하는 데비안 시스템은 사용자 www-data를 사용하고 있습니다. 따라서 사용자 이름에 사용할 수 있어야합니다.
Ed Haber

실제로,이 정규식은 사용자 이름에 '-'를 허용합니다! 첫 번째 문자는 az 여야하지만 후속 사용자 이름 문자는 '-', az 또는 0-9 일 수 있습니다.
steveha

오! 네가 옳아. 나는 그것을 보았을 때 여분을 놓쳤다.
Ed Haber

22

보다 구체적으로 POSIX ( "Unix 용 휴대용 운영 체제 인터페이스") 표준 (IEEE 표준 1003.1 2008)은 다음과 같이 명시되어 있습니다 .


3.431 사용자 이름

사용자를 식별하는 데 사용되는 문자열입니다. 사용자 데이터베이스를 참조하십시오. POSIX.1-2008을 준수하는 시스템에서 이식 가능하도록 값은 이식 가능한 파일 이름 문자 세트의 문자로 구성됩니다. 이 <hyphen>문자는 휴대용 사용자 이름의 첫 번째 문자로 사용해서는 안됩니다.


휴대용 파일 이름 문자 세트

The set of characters from which portable filenames are constructed.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -

이 표준을 준수하는 모든 사용자 이름은 POSIX를 준수하며 안전해야합니다.


6
이것이 사실이지만 일반적으로 사용자 이름에 대문자를 사용하는 것은 어리둥절합니다. 사람들은 대소 문자를 구분하는 암호에 충분한 문제가 있으며 사용자 이름을 기억 해야하는 것은 사용자가 다운 될 때 그들을 쫓아내는 것입니다. (예외 : 사용자 이름 규칙이 ALL UPPERCASE CHARACTERS. 인 경우)
voretaq7

1
POSIX.1-2017에서 이러한 정의는 약간 이동했습니다. 3.431 사용자 이름은 이제 3.437 사용자 이름 이고 3.278 휴대용 파일 이름 문자 세트는 이제 3.282 휴대용 파일 이름 문자 세트
척 울버

@ voretaq7 정당하다고 생각 하는 것은 사용자 이름으로 대소 문자 를 유지 하지만 로그인은 대소 문자를 구분하지 않는 것입니다. 따라서 사용자 이름은 CatInTheHat 일 수 있지만 catinthehat 또는 catintheHAT 또는 기타를 지정하여 로그인하십시오.
StackOverflowUser

1

NAME_REGEX에서 대문자와 소문자의 a부터 z까지의 숫자와 0에서 9까지의 숫자는 모두 나쁘다고 추론 할 수 있습니다.


당신이 찾고있는 단어는 "교육받은"입니다.
wfaulk

-또한 정규식을 다시 살펴보고 , 첫 번째 문자가 아닌 그대로 받아들입니다. 또한 기본적으로 대문자는 허용되지 않습니다 ( g플래그 가 없거나 OP에서 제공 한 정규식에 A-Z포함 되지 않음)NAME_REGEXNAME_REGEX="^[a-z][-a-z0-9]*\$"
SherylHohman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.