Um aluno acabou de perguntar qual seria a desvantagem de ter um ponto ( .
) no nome do usuário. Por exemplo:john.doe
Como isso afetará o sistema ou qualquer aplicativo?
O POSIX afirma isso sobre nomes de usuário:
[...] Para ser portátil em sistemas em conformidade com IEEE Std 1003.1-2001, o valor é composto de caracteres do conjunto de caracteres de nome de arquivo portátil. O hífen não deve ser usado como o primeiro caractere de um nome de usuário portátil.
... onde o conjunto de caracteres do nome do arquivo portátil é:
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 . _ -
Além disso, a página de manual do /etc/adduser.conf
arquivo indica:
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.
Embora ambas as especificações pareçam incluir o ponto, o Ubuntu (pelo menos no meu 13.04) parece não o permitir:
⊳ 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.
O padrão NAME_REGEX
no Ubuntu é (da página de /etc/adduser.conf
manual):
^[a-z][-a-z0-9]*$
_
, @
ou .
.Em conclusão, um ponto .
pode ser usado para um nome de usuário Ubuntu, o NAME_REGEX
que deve ser mudado é o /etc/adduser.conf
. Como está em conformidade com o POSIX, não deve haver nenhum problema em ter um .
nome de usuário em qualquer programa compatível com POSIX.
Execute este comando em um terminal:
sudo nano /etc/adduser.conf
Localize esta linha (perto do final do arquivo)
#NAME_REGEX="^[a-z][-a-z0-9]*$"
e substitua-o por
NAME_REGEX='^[a-z][-.a-z0-9]*$'
Observe que ele -
deve permanecer o primeiro caractere na expressão de colchete [...]
, caso contrário, é tratado como especificando um intervalo a-z
.
Pressione Ctrl+ Xe Ydepois Enter.
Referências:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
no/etc/adduser.conf
fiz.useradd
em vez disso:sudo useradd -m my.user
. É o que fazemos no Userify e também é multiplataforma.Os aplicativos que lêem nomes de usuário podem usar uma regex que assume que seu nome de usuário segue as regras e, portanto, não pode manipular seu nome de usuário.
fonte
Marc Haber explica uma possível desvantagem no bug Debian # 604242 (Permitir pontos no nome de usuário por padrão):
E
chown
ainda aceita o ponto como separador, embora não esteja mais documentado. Concordo que a compatibilidade com POSIX deve prevalecer e, de fato, emprego nomes de usuário que contêm pontos em vários sistemas sem efeitos adversos.fonte