¿Cuáles son los nombres de grupo permitidos para groupadd?

13

Seguí estas instrucciones para construir Shadow, que proporciona el groupaddcomando. Ahora recibo un error al intentar esto:

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

Verifiqué los nombres alfanuméricos y funcionan bien.

tshepang
fuente

Respuestas:

20

Ver el código fuente, específicamente libmisc/chkname.c. Shadow es bastante conservador: los nombres deben coincidir con la expresión regular [_a-z][-0-9_a-z]*\$?y pueden tener una GROUP_NAME_MAX_LENGTHlongitud máxima de caracteres (opción de configuración, valor predeterminado 16; los nombres de usuario generalmente pueden tener hasta 32 caracteres, sujeto a la determinación del tiempo de compilación).

Debian relaja mucho el cheque. A partir de la compresión, :se permite cualquier cosa menos espacios en blanco . Ver error # 264879 y error # 377844 .

POSIX requiere permitir letras de cualquier caso, dígitos y ._-( como en los nombres de archivo ). POSIX no establece ninguna restricción si no le importa la portabilidad. Varias restricciones recomendadas provienen del uso:

  • Los dos puntos, las nuevas líneas y los nulos están listos; simplemente no puedes usarlos en /etc/passwdo /etc/group.
  • Un nombre que consiste únicamente en dígitos es una mala idea, chowny chgrpse supone que debe tratar una secuencia de dígitos como un nombre si está en la base de datos de usuario / grupo, pero otras aplicaciones pueden tratar cualquier número como una identificación numérica.
  • No se recomienda una inicial -o un .nombre de usuario, ya que muchas aplicaciones esperan poder pasar $user.$groupa una utilidad externa (por ejemplo chown $user.$group /path/to/file)). A .en el nombre de un grupo debería causar menos problemas, pero aún así lo recomendaría.
  • / es probable que también cause problemas, porque algunos programas esperan poder usar nombres de usuario en los nombres de archivo.
  • Cualquier personaje que el shell expandiría es probablemente arriesgado.
  • Los caracteres no ASCII deberían estar bien si no le importa compartir con sistemas que pueden usar diferentes codificaciones.

Expect Todas las implementaciones modernas esperan chown $user:$group, pero admiten chown $user.$groupcompatibilidad con versiones anteriores, y hay demasiadas aplicaciones que pasan un punto para eliminar esa compatibilidad.

Gilles 'SO- deja de ser malvado'
fuente
Re chownargumento: la sintaxis actual, al menos en GNU coreutils, es user:group, con punto siendo aceptado solo por compatibilidad. Se puede usar j.smith:j.smith.
user1686
1
@grawity: no se trata solo de GNU coreutils, sino que el problema no es en chownsí mismo, son los scripts existentes y otros programas que llaman en chown $user.$grouplugar de chown $user:$group, incluso si la chownimplementación intenta hacer lo correcto, algunos casos son intrínsecamente ambiguos.
Gilles 'SO- deja de ser malvado'
1

Si te sientes aventurero, puedes editar /etc/groupdirectamente y poner el nombre del grupo que quieras. Además, esto tiene la ventaja adicional de que cuando encuentre uno de los problemas mencionados por @Gilles, es posible que no pueda cargar un editor para solucionar el problema, ni siquiera iniciar sesión en absoluto, ¡lo que le brinda una valiosa experiencia en la recuperación de un sistema dañado!

Malvinoso
fuente
55
No olvide editar /etc/gshadowcuando agregue grupos. Además, use en vigr(8)lugar de editar directamente los archivos.
camh