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?
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:
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.conf
file 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.
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_REGEX
in Ubuntu è (dalla /etc/adduser.conf
manpage):
^[a-z][-a-z0-9]*$
_
, @
o .
.in conclusione un punto .
può essere usato per un nome utente Ubuntu, il NAME_REGEX
giusto 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.
Esegui questo comando in un terminale:
sudo nano /etc/adduser.conf
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
.
Premi Ctrl+ X, quindi Y, quindi Enter.
Riferimenti:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
di /etc/adduser.conf
fatto.
useradd
invece: sudo useradd -m my.user
. Questo è ciò che facciamo in Userify ed è anche multipiattaforma.
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.
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. Sechown
accetta 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
chown
avrà smesso di accettare i punti come separatore.
E chown
accetta 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.