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?
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?
Respostas:
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.
Marc Haber explica uma possível desvantagem no bug Debian # 604242 (Permitir pontos no nome de usuário por padrão):
A existência de pontos no nome do usuário cria alguns problemas com os scipts
chown
, que ainda aceitam pontos como separador entre o nome do usuário e o nome do grupo. Sechown
ainda aceitar pontos, haverá scripts usando essa notação, que serão interrompidos se um nome de usuário contiver um ponto.Eu recomendaria manter o padrão atual (que pode ser substituído pela configuração local) até
chown
que pare de aceitar pontos como separador.
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.