Jakie są wady posiadania kropki w nazwie użytkownika?

27

Student właśnie zapytał, co może być wadą kropki ( .) w imieniu użytkownika. Na przykład:john.doe

Jak wpłynie to na system lub aplikacje w tym zakresie?

Luis Alvarado
źródło

Odpowiedzi:

38

POSIX stwierdza o nazwach użytkowników:

[...] Aby być przenośnym w systemach zgodnych z IEEE Std 1003.1-2001, wartość składa się ze znaków z przenośnego zestawu znaków w nazwie pliku. Łącznika nie należy używać jako pierwszego znaku przenośnej nazwy użytkownika.

... gdzie zestaw znaków przenośnej nazwy pliku to:

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

Ponadto strona podręcznika dla /etc/adduser.confpliku zawieraIkona strony następujące informacje:

   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.

Jednak,

Podczas gdy obie specyfikacje wydają się zawierać kropkę, Ubuntu (przynajmniej w moim 13.04) wydaje się to zabraniać:

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

Domyślne NAME_REGEXw Ubuntu to (z /etc/adduser.confmanpage):

^[a-z][-a-z0-9]*$
  • Zaczynając od małej litery, a następnie dowolnej liczby myślników, małych liter lub cyfr. No _, @albo ..

Więc,

Podsumowując, kropka .może być użyta dla nazwy użytkownika Ubuntu, NAME_REGEXwystarczy zmienić w /etc/adduser.conf. Ponieważ jest zgodny z POSIX, nie powinno być żadnych problemów z posiadaniem .nazwy użytkownika w żadnym programie zgodnym z POSIX.

Aby włączyć kropkę w nazwach użytkowników

  1. Uruchom to polecenie w terminalu:

    sudo nano /etc/adduser.conf
    
  2. Zlokalizuj ten wiersz (pod koniec pliku)

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

    i zamień na

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

    Zauważ, że -musi pozostać pierwszym znakiem w wyrażeniu nawiasowym [...], w przeciwnym razie jest traktowany jako określający zakres a-z.

  3. Naciśnij Ctrl+ X, a Ynastępnie Enter.


Referencje:

kiri
źródło
@ vasa1 Dziękujemy za zwrócenie uwagi, naprawione.
kiri
2
Cześć minerz029, zanim zaakceptuję odpowiedź, która, o ile widzę, jest doskonała bez wątpienia, czy mógłbyś podać powody, dla których Ubuntu podjąłby taką decyzję.
Luis Alvarado,
2
@LuisAlvarado: Możliwe, że jest to zgodne z programami [innymi niż POSIX], które oczekują nazwy użytkownika przy użyciu bardziej ograniczonego zestawu znaków. Znaki dozwolone przez Ubuntu domyślnie prawie działają w prawie wszystkich programach. Strona manu adduser opisuje domyślną regex jako „najbardziej konserwatywny”, będąc po bezpieczniejszej stronie nazw użytkowników.
kiri
1
To nie dla mnie, ale dodanie NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"w /etc/adduser.confnie.
Mario
1
Nie zmieniaj wyrażenia regularnego. Wystarczy zadzwonić useraddzamiast: sudo useradd -m my.user. Tak właśnie robimy w Userify i jest to również platforma.
Jamieson Becker
3

Aplikacje, które odczytują nazwy użytkowników, mogą używać wyrażenia regularnego, w którym zakłada się, że nazwa użytkownika jest zgodna z regułami, a zatem nie obsługuje nazwy użytkownika.

Jo-Erlend Schinstad
źródło
Ale równie dobrze mogą wówczas przyjąć założenia, które kolidują z założeniami przyjętymi przez dystrybucję, prawda?
0xC0000022L
3

Marc Haber wyjaśnia możliwą wadę błędu Debiana # 604242 ( domyślnie zezwalaj na kropki w nazwie użytkownika):

Posiadanie kropek w nazwie użytkownika stwarza pewne problemy z użyciem scipts chown, który nadal akceptuje kropki jako separator między nazwą użytkownika a nazwą grupy. Jeśli chownnadal akceptuje kropki, pojawią się skrypty korzystające z tej notacji, które ulegną awarii, jeśli nazwa użytkownika zawiera kropkę.

Zalecam zachowanie bieżącej wartości domyślnej (którą można zastąpić konfiguracją lokalną), dopóki chownnie przestanie akceptować kropek jako separatora.

I chownnadal akceptuje kropkę jako separator, chociaż nie jest już dokumentowana. Zgadzam się, że powinna obowiązywać kompatybilność z POSIX i rzeczywiście używam nazw użytkowników zawierających kropki w kilku systemach bez żadnych negatywnych skutków.

Ferenc Wágner
źródło