Quais são as desvantagens de ter um ponto em um nome de usuário?

27

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?

Luis Alvarado
fonte

Respostas:

38

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.confarquivoÍcone da página de manual 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.

Contudo,

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_REGEXno Ubuntu é (da página de /etc/adduser.confmanual):

^[a-z][-a-z0-9]*$
  • Começando com uma letra minúscula, qualquer número de traços, letras minúsculas ou dígitos. Não _, @ou ..

Tão,

Em conclusão, um ponto .pode ser usado para um nome de usuário Ubuntu, o NAME_REGEXque 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.

Para habilitar um ponto nos nomes de usuário

  1. Execute este comando em um terminal:

    sudo nano /etc/adduser.conf
    
  2. 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.

  3. Pressione Ctrl+ Xe Ydepois Enter.


Referências:

kiri
fonte
@ vasa1 Obrigado por apontar isso, corrigido.
kiri
2
Oi minez029, antes de aceitar a resposta que, tanto quanto eu posso ver, é excelente, sem dúvida, você poderia fornecer as razões pelas quais o Ubuntu tomaria essa decisão.
Luis Alvarado
2
@LuisAlvarado: É possível que seja compatível com programas [não POSIX] que esperam um nome de usuário usando um conjunto de caracteres mais limitado. Os caracteres que o Ubuntu permite por padrão têm quase a garantia de funcionar em quase todos os programas. A página de manual adduser descreve o regex padrão como "mais conservador", estando no lado mais seguro dos nomes de usuário.
kiri
1
Isto não funcionou para mim, mas acrescentando NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"no /etc/adduser.conffiz.
Mario
1
Não mude o regex. Basta ligar useraddem vez disso: sudo useradd -m my.user. É o que fazemos no Userify e também é multiplataforma.
Jamieson Becker
3

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.

Jo-Erlend Schinstad
fonte
Mas igualmente eles podem então fazer suposições que colidem com suposições feitas pela distribuição, certo?
0xC0000022L
3

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. Se chownainda 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é chownque pare de aceitar pontos como separador.

E chownainda 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.

Ferenc Wágner
fonte