Quali sono gli svantaggi di avere un punto in un nome utente?


27

Uno studente ha appena chiesto quale potrebbe essere il rovescio della medaglia di avere un punto ( .) nel nome dell'utente. Per esempio:john.doe

In che modo ciò influirà sul sistema o su qualsiasi app?

Risposte:


38

POSIX afferma questo sui nomi utente:

[...] Per essere portatile su tutti i sistemi conformi a IEEE Std 1003.1-2001, il valore è composto da caratteri del set di caratteri del nome file portatile. Il trattino non deve essere utilizzato come primo carattere di un nome utente portatile.

... dove si trova il set di caratteri del nome file portatile :

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

Inoltre, la manpage per il /etc/adduser.conffileIcona Manpage afferma:

   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.

Tuttavia,

Mentre entrambe le specifiche sembrano includere il punto, Ubuntu (almeno sul mio 13.04) sembra non consentirlo:

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

L'impostazione predefinita NAME_REGEXin Ubuntu è (dalla /etc/adduser.confmanpage):

^[a-z][-a-z0-9]*$
  • A partire da una lettera minuscola, quindi da un numero qualsiasi di trattini, lettere minuscole o cifre. No _, @o ..

Così,

in conclusione un punto .può essere usato per un nome utente Ubuntu, il NAME_REGEXgiusto deve essere cambiato in /etc/adduser.conf. Dal momento che è conforme a POSIX, non dovrebbero esserci problemi ad avere un .nome utente con qualsiasi programma conforme a POSIX.

Per abilitare un punto nei nomi utente

  1. Esegui questo comando in un terminale:

    sudo nano /etc/adduser.conf
    
  2. Individua questa riga (vicino alla fine del file)

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

    e sostituirlo con

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

    Si noti che -deve rimanere il primo carattere nell'espressione parentesi [...], altrimenti viene considerato come specificare un intervallo a-z.

  3. Premi Ctrl+ X, quindi Y, quindi Enter.


Riferimenti:


@ vasa1 Grazie per averlo sottolineato, risolto.
Kiri,

2
Ciao minerz029, prima di accettare la risposta che, per quanto posso vedere, è eccellente senza dubbio, potresti per favore fornire i motivi per cui Ubuntu avrebbe preso questa decisione.
Luis Alvarado,

2
@LuisAlvarado: è possibile che sia compatibile con programmi [non POSIX] che prevedono un nome utente che utilizza un set di caratteri più limitato. I caratteri consentiti da Ubuntu per impostazione predefinita sono quasi garantiti per funzionare in quasi tutti i programmi. La manpage adduser descrive il regex predefinito come "più conservativo", essendo sul lato più sicuro dei nomi utente.
Kiri,

1
Questo non ha funzionato per me, ma l'aggiunta NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"di /etc/adduser.conffatto.
Mario,

1
Non cambiare la regex. Basta chiamare useraddinvece: sudo useradd -m my.user. Questo è ciò che facciamo in Userify ed è anche multipiattaforma.
Jamieson Becker,

3

Le applicazioni che leggono i nomi utente potrebbero usare una regex che presuppone che il tuo nome utente segua le regole e quindi non possa gestirlo.


Ma allo stesso modo potrebbero fare ipotesi che si scontrano con ipotesi fatte dalla distribuzione, giusto?
0xC0000022L

3

Marc Haber spiega un possibile aspetto negativo nel bug Debian # 604242 (Consenti punti nel nome utente per impostazione predefinita):

La presenza di punti nel nome utente crea alcuni problemi con l'utilizzo di script chown, che accetta comunque punti come separatore tra nome utente e nome gruppo. Se chownaccetta ancora punti, ci saranno script che usano questa notazione, che si interromperanno se un nome utente contiene un punto.

Consiglierei di mantenere l'attuale impostazione predefinita (che può essere sovrascritta dalla configurazione locale) fino a quando non chownavrà smesso di accettare i punti come separatore.

E chownaccetta ancora il punto come separatore, sebbene non sia più documentato. Sono d'accordo che la compatibilità con POSIX dovrebbe prevalere e in effetti utilizzo nomi utente contenenti punti su diversi sistemi senza effetti negativi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.