Veja o código fonte, especificamente libmisc/chkname.c. A sombra é bastante conservadora: os nomes devem corresponder ao regexp [_a-z][-0-9_a-z]*\$?e podem ter no máximo GROUP_NAME_MAX_LENGTHcaracteres (opção de configuração, padrão 16; os nomes de usuário geralmente podem ter até 32 caracteres, sujeitos à determinação do tempo de compilação).
O Debian relaxa bastante a verificação. No momento do aperto, qualquer coisa, exceto espaços em branco e :é permitido. Veja o bug # 264879 e o bug # 377844 .
O POSIX requer a permissão de letras de ambos os casos, dígitos e ._-( como nos nomes dos arquivos ). O POSIX não define nenhuma restrição se você não se importa com portabilidade. Várias restrições recomendadas vêm do uso:
- Dois pontos, novas linhas e nulos estão certos; você simplesmente não pode usá-los em
/etc/passwdou /etc/group.
- Um nome que consiste apenas de dígitos é uma má idéia -
chowne chgrpdeve tratar uma sequência de dígitos como um nome se estiver no banco de dados de usuários / grupos, mas outros aplicativos podem tratar qualquer número como um ID numérico.
- Uma inicial
-ou a .em um nome de usuário não é altamente recomendada, porque muitos aplicativos esperam poder passar $user.$grouppara um utilitário externo (por exemplo chown $user.$group /path/to/file) ¹. A .em um nome de grupo deve causar menos problemas, mas eu ainda recomendo.
/ provavelmente também causará problemas, porque alguns programas esperam poder usar nomes de usuário em nomes de arquivo.
- Qualquer caractere que o shell expandisse é provavelmente arriscado.
- Caracteres não ASCII devem estar ok se você não se importar em compartilhar com sistemas que podem usar codificações diferentes.
¹ Todas as implementações modernas esperam chown $user:$group, mas oferecem suporte chown $user.$groupà compatibilidade com versões anteriores, e há muitos aplicativos por aí que passam um ponto para remover esse suporte de compatibilidade.
chownargumento: a sintaxe atual, pelo menos nos GNU coreutils, éuser:group, com o ponto sendo aceito apenas por compatibilidade. Pode-se usarj.smith:j.smith.