Quais são os nomes de grupos permitidos para groupadd?

13

Eu segui estas instruções para criar o Shadow, que fornece o groupaddcomando. Agora estou recebendo um erro ao tentar isso:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name

Verifiquei nomes alfanuméricos e eles funcionam bem.

tshepang
fonte

Respostas:

20

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.

Gilles 'SO- parar de ser mau'
fonte
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!

Malvineous
fonte
5
Não se esqueça de editar /etc/gshadowao adicionar grupos. Além disso, use em vigr(8)vez de editar diretamente os arquivos.
Camh