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.
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!
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
.chown
sí mismo, son los scripts existentes y otros programas que llaman enchown $user.$group
lugar dechown $user:$group
, incluso si lachown
implementación intenta hacer lo correcto, algunos casos son intrínsecamente ambiguos.Si te sientes aventurero, puedes editar
/etc/group
directamente 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!fuente
/etc/gshadow
cuando agregue grupos. Además, use envigr(8)
lugar de editar directamente los archivos.