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.
chownargumento: la sintaxis actual, al menos en GNU coreutils, esuser:group, con punto siendo aceptado solo por compatibilidad. Se puede usarj.smith:j.smith.