Respostas:
POSIX especifica o uso de um conjunto portátil de caracteres para nomes de usuários e grupos.
_ - .
são caracteres permitidos, NAME_REGEX
verifica se o nome de usuário contém apenas caracteres especificados. Os desenvolvedores de distribuição definem, se outros caracteres forem negados. O Ubuntu, por exemplo, proíbe o uso de .
por padrão.
A adição dessa restrição evita interferências com outras ferramentas do sistema, que podem interpretar caracteres especiais. Pense na variável $PATH
quando tiver um usuário com o nome my:user
e adicione seu diretório inicial a $PATH
:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/home/my:user/bin
Os diretórios /home/my
e user/bin
(provavelmente) não existiriam. Além disso, /etc/passwd
teria :
mais dois do que o necessário.
Edit: O
Debian adduser
(versão 3.110) usa /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/
para verificar nomes de usuário, _
é permitido desde NAME_REGEX
que não o proíba.
_
é permitido por padrão, consulte a edição. Dei um exemplo do personagem proibido :
para mostrar os possíveis problemas com ele.
Uma pergunta semelhante já foi respondida aqui
Teoricamente, você pode usar quase qualquer caractere ASCII desejado como nome de usuário, mas, para evitar algum tipo de erro, como o mencionado no artigo acima, é possível definir a expressão regular que evita determinados problemas.
:
uma nova linha ou um caractere nulo em um nome de usuário, mesmo se editar /etc/passwd
(ou na maioria dos outros bancos de dados de usuários) manualmente.
Estou usando o Debian Squeeze e consegui criar um usuário com sublinhado adduser user_1
,. Por que você diz que eles não são permitidos?
NAME_REGEX
é o nome permitido regex, não o nome não permitido regex ... ou seja, se um nome corresponder NAME_REGEX
, será válido.
NAME_REGEX
em /etc/adduser.conf
, e as built-in proíbe padrão _
.
_
não:
...