解決策 1:
具体的には、POSIX ("Portable Operating System Interface for Unix") 標準 (IEEE 標準 1003.1 2008) は次のように述べています。
3.437 ユーザー名
<ブロック引用>
ユーザーを識別するために使用される文字列。ユーザーデータベースも参照してください。 POSIX.1-2017 に準拠するシステム間で移植できるように、値は移植可能なファイル名文字セットの文字で構成されます。 <hyphen-minus>
文字は、ポータブル ユーザー名の最初の文字として使用しないでください。
3.282 移植可能なファイル名文字セット
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 準拠であり、安全であるべきです。
解決策 2:
私のアドバイスは、デフォルトの NAME_REGEX で推奨されている標準に従うことです。 *NIX では、ユーザー名には実際にはほとんど何でも入れることができますが、仮定を行うライブラリ コードで奇妙な問題が発生する可能性があります。適切なケース:
http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html
あなたへの私の質問:珍しい句読点を取り除くと、互いに衝突するドメイン名がたくさんありますか?たとえば、ドメイン名として「QUALITY-ASSURANCE」と「QUALITYASSURANCE」の両方がありますか?そうでない場合は、通常とは異なる文字を取り除き、残ったものをユーザー名として使用するというポリシーを採用することができます.
また、/etc/passwd 情報の GECOS フィールドの「実名」セクションを使用して、変更されていない元のドメイン名を保存することもでき、スクリプトによってそれを簡単に抽出できます。