Este artículo fue publicado originalmente en go2linux.org el 10 de octubre de 2007. El dominio ya no me pertenece, pero soy el autor original. Lo republico aquí en garron.me con correcciones y mejoras.

Introducción

chgrp cambia el grupo asociado a un archivo o directorio. Todo archivo en Linux pertenece tanto a un usuario (el propietario) como a un grupo. chgrp te permite cambiar el grupo sin tocar el propietario.

Solo el propietario del archivo o root puede cambiar el grupo, y un usuario normal solo puede cambiarlo a un grupo al que pertenezca.

Sintaxis

chgrp [opciones] grupo archivo...
chgrp [opciones] --reference=archivo_ref archivo...
  • grupo — el nombre o GID numérico del nuevo grupo
  • archivo — uno o varios archivos o directorios a modificar
  • --reference=archivo_ref — usar el grupo de archivo_ref como nuevo grupo

Ejemplos básicos

Cambiar el grupo de un archivo:

chgrp desarrolladores proyecto.py

Cambiar el grupo de varios archivos:

chgrp www-data index.html style.css app.js

Usar un GID numérico en lugar del nombre de grupo:

chgrp 1001 /var/app/datos

Cambio recursivo

Aplicar el cambio de grupo a un directorio y todo su contenido:

chgrp -R www-data /var/www/html/

La opción -R desciende recursivamente por los subdirectorios.

Copiar el grupo de otro archivo

Usa --reference para asignar el mismo grupo que tiene otro archivo:

chgrp --reference=/etc/passwd /tmp/mifichero

Opciones útiles

Opción Efecto
-R Recursivo — aplica a todos los archivos en subdirectorios
-v Verbose — muestra cada archivo procesado
-c Informa solo los archivos cuyo grupo cambia realmente
-f Silencioso — suprime los mensajes de error
-h Actúa sobre los propios enlaces simbólicos, no sobre lo que apuntan
--reference=archivo Usa el grupo de otro archivo como grupo destino

Enlaces simbólicos

Por defecto, chgrp sigue los enlaces simbólicos y cambia el grupo del archivo al que apunta el enlace. Para cambiar el grupo del propio enlace simbólico:

chgrp -h www-data /var/www/enlace

Ver el grupo actual

Usa ls -l para ver el grupo asignado a un archivo:

ls -l proyecto.py
-rw-r--r-- 1 ggarron desarrolladores 4096 Jun 14 10:00 proyecto.py

La tercera columna es el propietario; la cuarta es el grupo.

O usa stat para más detalle:

stat proyecto.py

chgrp vs chown vs chmod

Comando Cambia
chgrp Solo el grupo
chown Propietario (y opcionalmente el grupo)
chmod Permisos (lectura/escritura/ejecución)

chown también puede cambiar el grupo con la sintaxis propietario:grupo:

chown :desarrolladores proyecto.py          # igual que: chgrp desarrolladores proyecto.py
chown ggarron:desarrolladores proyecto.py   # cambia propietario y grupo a la vez

Usa chgrp cuando solo necesites cambiar el grupo y quieras ser explícito.

Ver los grupos disponibles

Para ver todos los grupos que existen en el sistema:

getent group

Para ver a qué grupos pertenece tu usuario:

groups

O para un usuario específico:

groups nombre_usuario