Was sind die Nachteile eines Punkts in einem Benutzernamen?

27

Ein Student hat gerade gefragt, was der Nachteil eines Punkts ( .) im Namen des Benutzers sein könnte. Beispielsweise:john.doe

Wie wirkt sich das auf das System oder die Apps aus?

Luis Alvarado
quelle

Antworten:

38

POSIX gibt dies über Benutzernamen an:

[...] Der Wert setzt sich aus Zeichen aus dem tragbaren Dateinamen-Zeichensatz zusammen, um auf Systemen portierbar zu sein, die der Norm IEEE Std 1003.1-2001 entsprechen. Der Bindestrich sollte nicht als erstes Zeichen eines tragbaren Benutzernamens verwendet werden.

... wo der portable Dateiname-Zeichensatz ist:

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 . _ -

In der Manpage für die /etc/adduser.confDateiManpage-Symbol heißt es außerdem:

   VALID NAMES
          adduser and addgroup enforce conformity to IEEE Std 1003.1-2001,
          which  allows  only  the following characters to appear in group
          and user names: letters, digits, underscores, periods, at  signs
          (@) and dashes. The name may not start with a dash. The "$" sign
          is allowed at the end of usernames (to conform to samba).

          An additional  check  can  be  adjusted  via  the  configuration
          parameter NAME_REGEX to enforce a local policy.

Jedoch,

Während beide Spezifikationen den Punkt zu enthalten scheinen, scheint Ubuntu (zumindest auf meinem 13.04) dies nicht zuzulassen:

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

Der Standard NAME_REGEXin Ubuntu ist (von der /etc/adduser.confManpage):

^[a-z][-a-z0-9]*$
  • Beginnen Sie mit einem Kleinbuchstaben und einer beliebigen Anzahl von Bindestrichen, Kleinbuchstaben oder Ziffern. Nein _, @oder ..

So,

Abschließend kann ein Punkt .für einen Ubuntu-Benutzernamen verwendet werden, der NAME_REGEXnur in geändert werden muss /etc/adduser.conf. Aufgrund .der POSIX-Konformität sollte es bei keinem POSIX-kompatiblen Programm zu Problemen mit dem Benutzernamen kommen.

So aktivieren Sie einen Punkt in Benutzernamen

  1. Führen Sie diesen Befehl in einem Terminal aus:

    sudo nano /etc/adduser.conf
    
  2. Suchen Sie diese Zeile (am Ende der Datei)

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

    und ersetzen Sie es durch

    NAME_REGEX='^[a-z][-.a-z0-9]*$'
    

    Beachten Sie, dass das -Zeichen das erste Zeichen im Klammerausdruck bleiben muss [...], andernfalls wird es als Angabe eines Bereichs behandelt a-z.

  3. Drücken Sie Ctrl+ X, dann Y, dann Enter.


Verweise:

kiri
quelle
@ vasa1 Danke für den Hinweis, behoben.
Kiri
2
Hallo minerz029, bevor ich die Antwort akzeptiere, die meines Erachtens zweifellos ausgezeichnet ist, kannst du bitte die Gründe angeben, warum Ubuntu diese Entscheidung treffen würde.
Luis Alvarado
2
@ LuisAlvarado: Es ist möglich, dass dies aus Gründen der Kompatibilität mit [nicht POSIX] -Programmen erfolgt, die einen Benutzernamen mit einem eingeschränkteren Zeichensatz erwarten. Die Zeichen, die Ubuntu standardmäßig zulässt, funktionieren garantiert in fast allen Programmen. Die Adduser-Manpage beschreibt den Standard-Regex als "am konservativsten", da er auf der sicheren Seite der Benutzernamen steht.
kiri
1
Das ist nicht für mich arbeiten, aber das Hinzufügen NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"in /etc/adduser.conftat.
Mario
1
Ändern Sie nicht den regulären Ausdruck. Rufen Sie einfach useraddstatt: sudo useradd -m my.user. Das machen wir in Userify und es ist auch plattformübergreifend.
Jamieson Becker
3

Anwendungen, die Benutzernamen lesen, verwenden möglicherweise einen regulären Ausdruck, der davon ausgeht, dass Ihr Benutzername den Regeln entspricht, und daher Ihren Benutzernamen nicht verarbeiten kann.

Jo-Erlend Schinstad
quelle
Aber genauso können sie dann Annahmen treffen, die mit den Annahmen der Distribution kollidieren, oder?
0xC0000022L
3

Marc Haber erklärt einen möglichen Nachteil im Debian-Fehler # 604242 (standardmäßig Punkte im Benutzernamen zulassen):

Wenn der Benutzername Punkte enthält, treten bei der Verwendung von Skripten einige Probleme auf chown , bei denen Punkte weiterhin als Trennzeichen zwischen Benutzername und Gruppenname akzeptiert werden. Wenn chownweiterhin Punkte akzeptiert werden, gibt es Skripte, die diese Notation verwenden. Diese Notation wird unterbrochen, wenn ein Benutzername einen Punkt enthält.

Ich würde empfehlen, die aktuelle Standardeinstellung (die durch die lokale Konfiguration überschrieben werden kann) bis beizubehalten chown keine Punkte mehr als Trennzeichen akzeptiert werden.

Und chownakzeptiert den Punkt weiterhin als Trennzeichen, obwohl er nicht mehr dokumentiert ist. Ich bin damit einverstanden, dass die POSIX-Kompatibilität vorherrschen sollte, und ich verwende in der Tat Benutzernamen, die Punkte enthalten, auf mehreren Systemen ohne nachteilige Auswirkungen.

Ferenc Wágner
quelle