Por que sublinhados não são permitidos em nomes de usuários em algumas distros (Debian por exemplo)


8

Então, por que o sublinhado foi considerado um caractere ruim para nomes de usuário no Debian (e possivelmente outras distribuições) enquanto foi removido do adduserNAME_REGEX do Ubuntu no Ubuntu?

Respostas:


7

POSIX especifica o uso de um conjunto portátil de caracteres para nomes de usuários e grupos.
_ - .são caracteres permitidos, NAME_REGEXverifica 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 $PATHquando tiver um usuário com o nome my:usere 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/mye user/bin(provavelmente) não existiriam. Além disso, /etc/passwdteria :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_REGEXque não o proíba.


1
Mas a questão era _não :...
Josh

O @ também não é permitido no posix, pelo menos de acordo com o adduser #
Sam

E sim, enquanto isso explica por que você não deve permitir: não explica por que _ é ruim.
Sam

1
_é permitido por padrão, consulte a edição. Dei um exemplo do personagem proibido :para mostrar os possíveis problemas com ele.
wag

@Sam, @ não é permitido em POSIX, consulte askubuntu.com/a/405668/13482
Daniel Serodio

3

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.


Você não poderá usar :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.
Gilles 'SO- stop be evil'

@Gilles sim, você corrigiu a resposta, mas o sublinhado está bom, para responder à pergunta que o NAME_REGEX existe para evitar algum tipo de erro, mas não está definido como padrão, porque normalmente alguns desses caracteres são permitidos.
tmow

0

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?


Talvez eu tenha interpretado mal. Acabei de me lembrar de editar o /etc/adduser.conf em um servidor Debian e o NAME_REGEX (ou seja, o nome não permitido regex) continha um sublinhado. No entanto, foi comentado lá, mas acho que assumi que ele representava o NAME_REGEX padrão.
Sam

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.
Josh

Lenny Debian (estável enquanto escrevo) não tem NAME_REGEXem /etc/adduser.conf, e as built-in proíbe padrão _.
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.