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

10

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

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

Eu verifiquei nomes alfanuméricos e eles funcionam bem.

    
por Tshepang 17.04.2011 / 01:10

2 respostas

16

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_LENGTH caracteres (opção de configuração, padrão 16; nomes de usuário geralmente podem ir até 32 caracteres, sujeitos à determinação em tempo de compilação). p>

O Debian relaxa muito o cheque. A partir do squeeze, qualquer coisa menos espaço em branco e : é permitido. Veja bug # 264879 e bug # 377844 .

POSIX requer a permissão de letras de cada caso, dígitos e ._- (< href="http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_276"> como nos nomes dos arquivos ). O POSIX não define nenhuma restrição se você não se importa com a portabilidade. Várias restrições recomendadas vêm do uso:

  • Colons, newlines e nulls estão certos; você simplesmente não pode usá-los em /etc/passwd ou /etc/group .
  • Um nome composto apenas por dígitos é uma má idéia - chown e chgrp devem tratar uma seqüência de dígitos como um nome se estiver no banco de dados do usuário / grupo, mas outros aplicativos podem tratar qualquer número como um banco de dados numérico. id.
  • Um - ou um . inicial em um nome de usuário não é recomendado, pois muitos aplicativos esperam poder transmitir $user.$group para um utilitário externo (por exemplo, chown $user.$group /path/to/file ) ¹. Um . em um nome de grupo deve causar menos problemas, mas eu ainda recomendaria contra isso.
  • / provavelmente causará problemas, porque alguns programas esperam poder usar nomes de usuários em nomes de arquivos.
  • Qualquer caractere que o shell expandisse provavelmente seria arriscado.
  • Caracteres não-ASCII devem estar ok se você não se importa em compartilhar com sistemas que podem usar codificações diferentes.

¹ Todas as implementações modernas esperam chown $user:$group , mas suportam chown $user.$group para compatibilidade com versões anteriores, e há muitos aplicativos que passam um ponto para remover esse suporte de compatibilidade.

    
por 17.04.2011 / 01:46
1

Se estiver se sentindo aventureiro, você pode editar /etc/group diretamente e colocar qualquer nome de grupo que desejar. Além disso, isso tem a vantagem 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é fazer login - dando a você uma valiosa experiência na recuperação de um sistema corrompido!

    
por 17.04.2011 / 06:41