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_LENGTH
longitud 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/passwd
o /etc/group
.
- Un nombre que consiste únicamente en dígitos es una mala idea,
chown
y chgrp
se 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.$group
a 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.$group
compatibilidad con versiones anteriores, y hay demasiadas aplicaciones que pasan un punto para eliminar esa compatibilidad.
chown
argumento: la sintaxis actual, al menos en GNU coreutils, esuser:group
, con punto siendo aceptado solo por compatibilidad. Se puede usarj.smith:j.smith
.