El comando chown (change owner) permite cambiar el propietario y/o grupo de uno o varios archivos y directorios. Su utilización es muy sencilla pero es un comando básico de Unix y Linux que conviene conocer a la perfección para evitar problemas y/o sustos.
Vamos a ver con ejemplos como usar el comando chown.El modo de utilización es el siguiente:
chown [OPCIONES]... [PROPIETARIO][:[GRUPO]] FICHERO/DIRECTORIO
A la hora de especificar el propietario y el grupo, se puede indicar el UID/GID o el nombre del usuario y del grupo. En el caso de indicar únicamente el propietario, no se realizará ninguna modificación del grupo. Luego veremos que se puede «abreviar» el comando si queremos que el grupo sea el asociado al usuario, en lugar de tener que pasar como parámetro usuario y grupo. Con chown además podemos hacer la misma función que con el comando chgrp especificando únicamente el grupo y omitiendo el usuario (:grupo). Vamos a ver todo con ejemplos para que sea más sencillo de entender.
Visualizar usuarios y grupos actuales
Con un simple «ls -l» podemos visualizar el usuario y grupo asignado a un determinado archivo o directorio. La tercera columna especifica el usuario (UID) y la cuarta el grupo (GID):
$ ls -l test/ total 0 -rw-r--r-- 1 alex alex 0 2014-09-15 21:14 bar.txt
Podemos visualizar el lugar de los nombres el UID y GID con el parámetro «n» o «–numeric-uid-gid»:
$ ls -ln test/ total 0 -rw-r--r-- 1 1000 1000 0 2014-09-15 21:14 bar.txt
Modificar propietario y grupo de un archivo
Vamos a modificar el propietario y grupo de bar.txt al usuario «root» y grupo «root»:
# chown root:root test/bar.txt
Con un ls verificamos el cambio:
# ls -l test/ total 0 -rw-r--r-- 1 root root 0 2014-09-15 21:14 bar.txt
Ahora vamos a modificar solamente el usuario a «alex», manteniendo el grupo «root»:
# chown alex test/bar.txt # ls -l test/ total 0 -rw-r--r-- 1 alex root 0 2014-09-15 21:14 bar.txt
Al igual que con el comando chgrp, podemos modificar únicamente el grupo, manteniendo el usuario. Podéis ver que dejamos vacío el parámetro de usuario:
# chown :alex test/bar.txt # ls -l test/ total 0 -rw-r--r-- 1 alex alex 0 2014-09-15 21:14 bar.txt
Podemos ahorrarnos escribir el grupo si queremos que sea el mismo (asociado) que el usuario:
# chown alex: test/bar.txt
Modificar propietario y grupo de forma recursiva
Mucho cuidado al aplicar cambios de propietarios y grupos de forma recursiva (al igual que al borrar o modificar permisos). Para modificar recursivamente propietarios y/o grupos es exactamente igual que los ejemplos anteriores pero añadiendo el parámetro «-R» o «–recursive»:
# chown -R alex:alex test/
El anterior comando modificaría el usuario y grupo del directorio «test/» y todo lo que contenga.
Existe una opción interesante para evitar aplicar cambios recursivos a «/», es el parámetro «–preserve-root» que hará que un intento de modificar recursivamente «/» falle:
--no-preserve-root do not treat `/' specially (the default) --preserve-root fail to operate recursively on `/'
Como podéis observar, no está activada por defecto así que, ¡cuidado con lo que hacéis! Prestad especial atención a los comodines (*), rutas absolutas y/o relativas, etc.
Cambiar sólo si el usuario o grupo es…
Esta opción es interesante, realizará el cambio de propietario y/o grupo que indiquemos sólo si se cumple la condición de que el usuario o el grupo sea el mismo que especificamos con el parámetro «–from=».
El siguiente ejemplo modifica el usuario y grupo de bar.txt a «root:roo» sólo si el usuario y grupo actual son «alex»:
# chown --from=alex:alex root:root test/bar.txt
Cambiar usando referencias
Por último, podemos usar como «base» otro archivo para que los cambios de propietario y grupo se realicen en base a los que tiene dicho archivo referenciado. Para ello usaremos el parámetro «–reference».
Este ejemplo cambia el propietario y grupo de bar.txt a partir de el usuario y grupo de foo.txt:
# chown --reference=test/foo.txt test/bar.txt
Y esto es todo, creo que es suficiente para saber utilizar chown en su totalidad. Es un comando bastante sencillo de entender y usar.
En 1970, dos de los mejores hombres de una Empresa Americana (AT&T), que programaban un comando, fueron aprisionados por un fichero del que no eran propietarios. No tardaron en fugarse de la prisión lógica en que se encontraban recluidos por la falta de permisos. Hoy, buscados todavía por el gobierno, sobreviven como fortune cookies. Si tiene usted algún problema de permisos y si los encuentra, quizá pueda contratarlos.
¡¡El comando chown!!
Bibliografía: De acuerdo con la wikipedia (http://en.wikipedia.org/wiki/Chmod), chmod apareció con AT&T Linux v1 (implementado en 1969, publicado en 1970: http://en.wikipedia.org/wiki/History_of_Linux), escrito por Ken Thompson y Dennis Ritchie
Sin palabras, eres un «mega freak» jajaja
Muchas gracias, esta muy bien explicado, de lo que he leído es lo mejor.