Perché i caratteri di sottolineatura non sono ammessi nei nomi utente in alcune distro (Debian ad esempio)


8

Quindi perché il carattere di sottolineatura è stato considerato un carattere negativo per i nomi utente in Debian (e forse altre distribuzioni) mentre è stato rimosso dal adduserNAME_REGEX di Ubuntu?


Debian ha impostato il carattere di sottolineatura come requisito per i nomi utente che sono correlati ai pacchetti. debian.org/doc/debian-policy/…
Rfraile

Risposte:


7

POSIX specifica l'utilizzo di un set portatile di caratteri per i nomi di utenti e gruppi.
_ - .sono ammessi caratteri, NAME_REGEXcontrolla se il nome utente contiene solo caratteri specificati. Gli sviluppatori della distribuzione definiscono se vengono negati ulteriori caratteri. Ubuntu, ad esempio, proibisce l'uso di .default.

L'aggiunta di questa restrizione evita interferenze con altri strumenti di sistema, che possono interpretare caratteri speciali. Pensa alla variabile $PATH, quando hai un utente con il nome my:usere aggiungi la tua home directory a $PATH:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

Le directory /home/mye user/bin(probabilmente) non esisterebbero. Inoltre, /etc/passwdne avrei due in :più del necessario.

Modifica:
Debian adduser(versione 3.110) usa /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/per controllare i nomi utente, _ è permesso fintanto che NAME_REGEXnon lo proibisce.


1
Ma la domanda _non era :...
Josh,

@ Non è consentito anche in posix, almeno secondo adduser
Sam

E sì, mentre questo spiega perché non dovresti permettere: non spiega perché _ è un male.
Sam,

1
_è consentito per impostazione predefinita, vedere la modifica. Ho dato un esempio del personaggio proibito :per mostrare i possibili problemi con esso.
scossa

@Sam, @ non è consentito in POSIX, vedere askubuntu.com/a/405668/13482
Daniel Serodio,

3

Una domanda simile ha già ricevuto risposta qui

Teoricamente puoi usare quasi tutti i caratteri ASCII che desideri come nome utente, ma, per evitare qualche tipo di bug, come quello menzionato nell'articolo sopra, puoi impostare quell'espressione regolare che evita determinati problemi.


Non sarai in grado di usare :, una nuova riga o un carattere null in un nome utente anche se modifichi /etc/passwd(o la maggior parte degli altri database utente) a mano.
Gilles 'SO- smetti di essere malvagio' il

@Gilles sì hai ragione, ho corretto la risposta, ma il carattere di sottolineatura va bene, per rispondere alla domanda che NAME_REGEX è lì per prevenire qualche tipo di bug, ma non è impostato come predefinito perché normalmente alcuni di questi caratteri sono consentiti.
dal

0

Sto usando Debian Squeeze e sono riuscito a creare un utente con sottolineatura, adduser user_1. Perché dici che non sono ammessi?


Forse l'ho interpretato male. Mi sono appena ricordato di aver modificato /etc/adduser.conf su un server Debian e NAME_REGEX (ovvero il nome regex non consentito) conteneva un carattere di sottolineatura. Tuttavia è stato commentato lì, ma suppongo di aver presupposto che rappresentasse il NAME_REGEX predefinito.
Sam,

NAME_REGEXè il nome regex consentito , non il nome regex non consentito ... ovvero se un nome corrisponde NAME_REGEXallora è valido.
Josh,

Debian Lenny (stabile mentre scrivo) non ha NAME_REGEXin /etc/adduser.conf, e il built-in proibisce di default _.
Gilles 'SO- smetti di essere malvagio' il
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.