Lösung 1:
Genauer gesagt heißt es im POSIX-Standard ("Portable Operating System Interface for Unix") (IEEE-Standard 1003.1 2008):
3.437 Benutzername
Eine Zeichenfolge, die verwendet wird, um einen Benutzer zu identifizieren; siehe auch Benutzerdatenbank. Um über Systeme hinweg portierbar zu sein, die POSIX.1-2017 entsprechen, setzt sich der Wert aus Zeichen aus dem Zeichensatz für portable Dateinamen zusammen. Der <hyphen-minus>
sollte nicht als erstes Zeichen eines portablen Benutzernamens verwendet werden.
3.282 Zeichensatz für tragbare Dateinamen
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 . _ -
Jeder Benutzername, der diesem Standard entspricht, ist POSIX-konform und sollte sicher sein.
Lösung 2:
Mein Rat an Sie ist, dem von der Standardeinstellung NAME_REGEX empfohlenen Standard zu folgen. Sie können unter *NIX tatsächlich fast alles in einen Benutzernamen einfügen, aber Sie können auf seltsame Probleme mit Bibliothekscode stoßen, der Annahmen macht. Fallbeispiel:
http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html
Meine Frage an Sie:Haben Sie viele Domainnamen, die miteinander kollidieren würden, wenn Sie die ungewöhnliche Interpunktion entfernen würden? Haben Sie zum Beispiel sowohl „QUALITY-ASSURANCE“ als auch „QUALITYAASSURANCE“ als Domainnamen? Wenn nicht, könnten Sie einfach die ungewöhnlichen Zeichen entfernen und die verbleibenden als Benutzernamen verwenden.
Außerdem könnten Sie den Abschnitt "echter Name" des GECOS-Felds in den /etc/passwd-Informationen verwenden, um den ursprünglichen, unveränderten Domänennamen zu speichern, und Skripte könnten ihn ziemlich einfach extrahieren.