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?
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?
Antworten:
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.conf
Datei 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.
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_REGEX
in Ubuntu ist (von der /etc/adduser.conf
Manpage):
^[a-z][-a-z0-9]*$
_
, @
oder .
.Abschließend kann ein Punkt .
für einen Ubuntu-Benutzernamen verwendet werden, der NAME_REGEX
nur 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.
Führen Sie diesen Befehl in einem Terminal aus:
sudo nano /etc/adduser.conf
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
.
Drücken Sie Ctrl+ X, dann Y, dann Enter.
Verweise:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
in /etc/adduser.conf
tat.
useradd
statt: sudo useradd -m my.user
. Das machen wir in Userify und es ist auch plattformübergreifend.
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.
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. Wennchown
weiterhin 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 chown
akzeptiert 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.