Típicamente se utiliza el comando chown para modificar tanto el usuario como grupo dueño de un archivo o conjunto de archivos. Pero ¿qué pasa si necesitamos sólo cambiar el usuario o sólo cambiar el grupo? Veamos algunos usos avanzados de chown y chgrp en Linux con ejemplos prácticos.



Antes de continuar, recomiendo leer antes el artículo Usuarios, grupos, permisos y modos octales en sistemas Unix para comprender el funcionamiento de los permisos Unix en un sistema de archivos Linux.

Para entender mejor la problemática, veamos directamente un ejemplo. El siguiente directorio (puede ser un directorio Web, un repositorio, etc.) contiene archivos con ownsership de diferentes usuarios y grupos:

root@hal9000:/usr/local/linuxito.com# ll
total 0
-rw-r--r-- 1 emi      www-data 0 Oct 15 10:35 abc123.png
-rw-r--r-- 1 root     root     0 Oct 15 10:34 archivo1
-rw-r--r-- 1 emi      emi      0 Oct 15 10:34 linuxito
-rw-r--r-- 1 www-data www-data 0 Oct 15 10:34 pepe
-rw-r--r-- 1 root     staff    0 Oct 15 10:34 saraza123

A fines prácticos, podemos suponer que el mismo no contiene sólo estos, sino cientos o tal vez miles de archivos y subdirectorios adicionales. ¿Qué ocurre si es necesario modificar sólo el usuario dueño de estos archivos sin alterar sus grupos? O a la inversa modificar sólo el grupo sin alterar el usuario.

Para modificar permisos de archivos y directorios en sistemas operativos de la familia Unix, típicamente se utiliza el comando chown con la siguiente sintaxis:

# chown usuario:grupo archivo

Esta sintaxis altera tanto el usuario como grupo dueño del archivo.

Veamos la ayuda del comando chown:

root@hal9000:/usr/local/linuxito.com# chown --help | grep Usage
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...

Tal como se observa, para especificar un grupo es requisito anteponer dos puntos (:), esto es precisamente lo que diferencia un nombre de grupo de un nombre de usuario. Sin embargo, es opcional especificar un usuario antes de los dos puntos (notar que USER está entre corchetes, lo que indica que se trata de un parámetro opcional). Esto significa que si no se indica un usuario, sólo se cambiará el ownership de grupo.

Por ejemplo para cambiar el grupo a "www-data" sin modificar el usuario a los archivos del directorio actual:

# chown :grupo archivo

Por ejemplo:

root@hal9000:/usr/local/linuxito.com# chown :www-data *
root@hal9000:/usr/local/linuxito.com# ll
total 0
-rw-r--r-- 1 emi      www-data 0 Oct 15 10:35 abc123.png
-rw-r--r-- 1 root     www-data 0 Oct 15 10:34 archivo1
-rw-r--r-- 1 emi      www-data 0 Oct 15 10:34 linuxito
-rw-r--r-- 1 www-data www-data 0 Oct 15 10:34 pepe
-rw-r--r-- 1 root     www-data 0 Oct 15 10:34 saraza123

Pero a su vez, la expresión regular que identifica a un nombre de grupo (:[GROUP]) está entre corchetes. Lo que significa que indicar un nombre de grupo es opcional. De esta forma, si se especifica sólo un nombre de usuario, no se alterará el grupo:

# chown usuario archivo

Por ejemplo:

root@hal9000:/usr/local/linuxito.com# chown root *
root@hal9000:/usr/local/linuxito.com# ll
total 0
-rw-r--r-- 1 root www-data 0 Oct 15 10:35 abc123.png
-rw-r--r-- 1 root www-data 0 Oct 15 10:34 archivo1
-rw-r--r-- 1 root www-data 0 Oct 15 10:34 linuxito
-rw-r--r-- 1 root www-data 0 Oct 15 10:34 pepe
-rw-r--r-- 1 root www-data 0 Oct 15 10:34 saraza123

En definitiva, con la herramienta chown es posible alterar sólo el usuario (chown usuario archivo), sólo el grupo (chown :grupo archivo), o ambos (chown usuario:grupo archivo).

Este utilitario es parte del paquete GNU coreutils, el cual proporciona una herramienta adicional para cambiar sólo el grupo dueño de un archivo o conjunto de archivos: chgrp.

# chgrp grupo archivo

Por ejemplo:

root@hal9000:/usr/local/linuxito.com# chgrp emi *
root@hal9000:/usr/local/linuxito.com# ll
total 0
-rw-r--r-- 1 root emi 0 Oct 15 10:35 abc123.png
-rw-r--r-- 1 root emi 0 Oct 15 10:34 archivo1
-rw-r--r-- 1 root emi 0 Oct 15 10:34 linuxito
-rw-r--r-- 1 root emi 0 Oct 15 10:34 pepe
-rw-r--r-- 1 root emi 0 Oct 15 10:34 saraza123

chgrp tiene las mismas opciones que chown y es prácticamente un alias a chown :grupo archivo.

Finalmente, tanto chown (para todos los casos) como chgrp, permiten cambiar permisos recursivamente utilizando el parámetro -R. Además, las opciones -H y -L permiten atravesar enlaces simbólicos ya sean en archivos pasados como parámetro como en archivos encontrados en la búsqueda recursiva respectivamente.

Referencias


Tal vez pueda interesarte


Compartí este artículo