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?
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?
Risposte:
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.
_non era :...
_è consentito per impostazione predefinita, vedere la modifica. Ho dato un esempio del personaggio proibito :per mostrare i possibili problemi con esso.
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.
:, 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.
Sto usando Debian Squeeze e sono riuscito a creare un utente con sottolineatura, adduser user_1. Perché dici che non sono ammessi?
NAME_REGEXè il nome regex consentito , non il nome regex non consentito ... ovvero se un nome corrisponde NAME_REGEXallora è valido.
NAME_REGEXin /etc/adduser.conf, e il built-in proibisce di default _.