chown y chgrp, Desambiguando IDs y nombres de usuario

Ya que los argumentos propietario y grupo para chown y chgrp pueden ser especificados como nombres o IDs numéricos, existe una ambiguedad aparente. ¿Qué sucede si un usuario o grupo es una cadena de dígitos? ¿Debería el interprete de comandos interpretarlo como un nombe de usuario o como un ID?.

El estandar POSIX requiere que chown y chgrp primero intenten resolver la cadena especificada como si fuese un nombre, y solo una vez que haya fallado, entonces que intente interpretarlo como un ID. Esto es problemático cuando quieres especificar un ID numérico, digamos 42, y debe funcionar aun en una situación patológica donde ’42′ es el nombre de usuario que dirige a otro ID numérico, digamos 1000. El invocar simplemente chown 42 F, establecería el ID del propietario de F a 1000, no a lo que tu intentaste inicialmente.

Evaluando el problema más detalladamente: si utilizamos 42, como un ID numérico, pero resulta que en mi sistema ya hay un usuario que en vez de ‘juan’ se llama ’42′, pero su ID es 1000. ¿Qué hacemos?

Nota: Utilizar un número como un nombre de usuario es común en algunos ambientes.

chown y chgrp de GNU proveen una manera de evitar esto, que a la vez resulta en una significativa mejora de funcionamiento al eliminar búsquedas en la base de datos (de usuarios). Simplemente precede cada ID numerico y/o grupo con un ‘+’, para forzar su interpretación como un entero.


# chown +42 F
# chgrp +$id_de_grupo_numerico otro-archivo
# chown +0:+0 /

chown y chgrp de GNU saltan el proceso de búsqueda de nombre para cada cadena con prefijo ‘+’, ya que una cadena que contenga ‘+’ nunca sera un nombre de grupo o usuario válido. Esta sintaxis es aceptada en la mayoría de los sistemas Unix comunes. Ojo: a excepción de Solaris 10. [Por suerte usamos Slackware ;) ]

This entry was posted in Administración, Comandos, General.

One Response to chown y chgrp, Desambiguando IDs y nombres de usuario

  1. Pingback: Distribuciones GNU/Linux (Slackware-ES)

Leave a Reply