Quali personaggi dovrei usare o non usare nei nomi utente su Linux?


39

Voglio creare account utente che prendono il nome da un nome di dominio. adduser si lamenta che i nomi utente devono corrispondere NAME_REGEXall'espressione regolare.

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

Posso aggiungere gli utenti usando useradd senza lamentele. C'è una ragione per cui non dovrei modificare l'espressione regolare per consentire ., -e _?

Quali personaggi causeranno problemi e non dovrebbero essere ammessi nei nomi utente?

Questo è il valore predefinito NAME_REGEX.

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

1
Nota che NAME_REGEXaccetta già -fintanto che non è il primo personaggio.
Anello Ø

Perché non aggiungere .? Considera un utente di nome .o ... Quindi, rmquell'utente nominato ...
Jon,

1
@Jon non è un problema poiché rmnon è il comando da utilizzare durante l'eliminazione di un utente. Sono d'accordo ..non è un nome ragionevole per ragioni simili, ma rmnon è uno di quelli.
toon81,

Risposte:


26

Il mio consiglio è di seguire lo standard raccomandato dal predefinito NAME_REGEX. Puoi effettivamente inserire praticamente qualsiasi cosa in un nome utente in * NIX ma potresti riscontrare strani problemi con il codice della libreria che fa ipotesi. Caso in questione:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

La mia domanda per te: hai molti nomi di dominio che si scontrerebbero se togliessi la punteggiatura insolita? Ad esempio, hai entrambi "QUALITÀ-ASSURANCE" e QUALITYASSURANCE "come nomi di dominio? In caso contrario, potresti semplicemente adottare una politica di eliminare i caratteri insoliti e utilizzare ciò che resta come nome utente.

Inoltre, potresti usare la sezione "real name" del campo GECOS nelle informazioni / etc / passwd per memorizzare il nome domaain originale e non modificato, e gli script potrebbero estrarlo abbastanza facilmente.


È l'incontro con la parte casuale di bug inaspettati di cui sono preoccupato. Posso rimuovere abbastanza facilmente i punti e ancora non ho possibilità di scontro tra nomi, ma il - potrebbe causare un problema. Tuttavia è abbastanza improbabile.
Ed Haber,

Quindi il sistema debian che sto usando sta usando un utente www-data. Quindi sembra che dovrebbe essere ok per essere usato nei nomi utente.
Ed Haber,

In realtà, quell'espressione regolare consente "-" nei nomi degli utenti! La prima lettera deve essere az, ma le lettere successive dei nomi utente possono essere '-', az o 0-9.
Steveha,

Ohh! hai ragione. Mi mancava l'extra - quando lo guardavo.
Ed Haber,

22

Più specificamente, lo standard POSIX ("Portable Operating System Interface for Unix") (IEEE Standard 1003.1 2008) afferma :


3.431 Nome utente

Una stringa utilizzata per identificare un utente; vedi anche Database utenti. Per essere portatile su tutti i sistemi conformi a POSIX.1-2008, il valore è composto da caratteri del set di caratteri del nome file portatile. Il <hyphen>personaggio non deve essere usato come primo carattere di un nome utente portatile.


3.278 Set di caratteri del nome file portatile

The set of characters from which portable filenames are constructed.

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

Qualsiasi nome utente conforme a questo standard è conforme a POSIX e deve essere sicuro.


6
Anche se questo è vero, è generalmente disapprovato avere caratteri maiuscoli nei nomi utente - le persone hanno abbastanza problemi con le password con distinzione tra maiuscole e minuscole, e far loro ricordare il caso nei loro nomi utente li sta solo prendendo a calci quando sono giù. (Eccezione: quando la convenzione del nome utente è ALL UPPERCASE CHARACTERS.)
voretaq7,

1
A partire da POSIX.1-2017, tali definizioni si sono leggermente spostate. 3.431 Nome utente ora 3.437 Nome utente e 3.278 Set di caratteri nome file portatile ora 3.282 Set di caratteri nome file portatile
Chuck Wolber

@ voretaq7 Quello che penso sia legittimo è preservare il caso in un nome utente, ma rendere insensibili gli accessi. Quindi un nome utente potrebbe essere CatInTheHat ma accedi specificando catinthehat o catintheHAT o altro.
StackOverflowUser

1

Da NAME_REGEX si può dedurre che tutto tranne che dalla A alla Z in maiuscolo e minuscolo e il numero da 0 a 9 sarebbe negativo.


La parola che stai cercando è "dedotta".
wfaulk,

guarda di nuovo la regex, -è anche accettata (ma non come primo carattere). Inoltre, per impostazione predefinita non è accettata la maiuscola (non c'è gbandiera, né è A-Zinclusa nella NAME_REGEX regex fornita dall'OP.NAME_REGEX="^[a-z][-a-z0-9]*\$"
SherylHohman,
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.