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.
Re chownargumento: a sintaxe atual, pelo menos nos GNU coreutils, é user:group, com o ponto sendo aceito apenas por compatibilidade. Pode-se usar j.smith:j.smith.
user1686
1
@ grrawity: Não são apenas os coreutils do GNU, mas o problema não é o chownpróprio, são os scripts existentes e outros programas que chamam em chown $user.$groupvez de chown $user:$group- mesmo que a chownimplementação tente fazer a coisa certa, alguns casos são intrinsecamente ambíguos.
Gilles 'SO- stop be evil'
1
Se você estiver se sentindo aventureiro, poderá editar /etc/groupdiretamente e colocar o nome do grupo que desejar. Além disso, isso tem o bônus adicional de que, quando você encontrar um dos problemas mencionados pelo @Gilles, talvez não seja possível carregar um editor para corrigir o problema ou até mesmo fazer login - fornecendo uma experiência valiosa na recuperação de um sistema quebrado!
chown
argumento: a sintaxe atual, pelo menos nos GNU coreutils, éuser:group
, com o ponto sendo aceito apenas por compatibilidade. Pode-se usarj.smith:j.smith
.chown
próprio, são os scripts existentes e outros programas que chamam emchown $user.$group
vez dechown $user:$group
- mesmo que achown
implementação tente fazer a coisa certa, alguns casos são intrinsecamente ambíguos.Se você estiver se sentindo aventureiro, poderá editar
/etc/group
diretamente e colocar o nome do grupo que desejar. Além disso, isso tem o bônus adicional de que, quando você encontrar um dos problemas mencionados pelo @Gilles, talvez não seja possível carregar um editor para corrigir o problema ou até mesmo fazer login - fornecendo uma experiência valiosa na recuperação de um sistema quebrado!fonte
/etc/gshadow
ao adicionar grupos. Além disso, use emvigr(8)
vez de editar diretamente os arquivos.