chgrp
Cambia el grupo de un archivo o carpeta.
Cambia el grupo de un archivo o carpeta sin tocar quién es el dueño. Lo usas para que un equipo pueda trabajar sobre los mismos archivos, o para dejar las carpetas de un sitio web con el grupo que espera el servidor (www-data, nginx, tomcat). Para archivos que no son tuyos necesitas sudo; para los tuyos basta con que pertenezcas al grupo destino.
chgrp [opciones] GRUPO ARCHIVO...chgrp -R sobre /, /etc o /var puede dejar el sistema inservible: /etc/shadow, por ejemplo, solo lo puede leer el grupo shadow, así que si le cambias el grupo nadie vuelve a poder entrar. Y cuidado con grupos abiertos como users o sudo: si el archivo queda con permiso de escritura para el grupo, todos los miembros de ese grupo pueden modificarlo.
Despiece
5 ejemplosCambiar el grupo de un archivo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sudo | Comando | Ejecuta como administrador; cambiar el grupo de un archivo que no es tuyo lo requiere. |
| 2 | chgrp | Comando | El comando para cambiar el grupo. |
| 3 | ventas | Valor | El grupo nuevo. Tiene que existir: lo ves con getent group ventas. |
| 4 | informe.doc | Argumento | El archivo cuyo grupo cambia. El dueño no se toca. |
informe.doc queda con el grupo ventas; el dueño sigue siendo el mismo. Lo compruebas con ls -l: la línea termina en ventas, no en tu usuario.
Cambiarlo sin sudo cuando eres del grupo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | chgrp | Comando | El comando para cambiar el grupo. |
| 2 | ventas | Valor | El grupo destino. |
| 3 | informe.doc | Argumento | El archivo que ya es tuyo y del que eres miembro del grupo destino. |
Funciona sin sudo en dos casos: que seas el dueño del archivo y que pertenezcas al grupo destino (lo verificas con groups). Si te falta una de las dos, chgrp responde chgrp: changing group of 'informe.doc': Operation not permitted.
Dejar una carpeta web con el grupo del servidor
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sudo | Comando | Las carpetas de /var son de root. |
| 2 | chgrp | Comando | El comando para cambiar el grupo. |
| 3 | -R | Opción | Recursivo: aplica el cambio a la carpeta y a todo lo que contiene. |
| 4 | www-data | Valor | El grupo con el que corre el servidor web en Debian y Ubuntu. |
| 5 | /var/www/mi-sitio | Argumento | La carpeta del sitio, con sus subcarpetas y archivos. |
La carpeta, sus archivos y subcarpetas quedan con el grupo www-data, que es el que Nginx y Apache usan para leer el contenido. Con -R también se aplica a lo que ya existía, así que revisa la ruta antes de correrlo. Si el grupo no existe, chgrp responde chgrp: invalid group.
Una carpeta compartida entre varias personas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sudo | Comando | Hace falta root para cambiar archivos ajenos. |
| 2 | chgrp | Comando | El comando para cambiar el grupo. |
| 3 | -R | Opción | Recursivo: también los archivos de adentro. |
| 4 | empleados | Valor | El grupo que comparten las personas que trabajan en esa carpeta. |
| 5 | /srv/presupuestos | Argumento | La carpeta compartida. |
Todo el contenido queda con el grupo empleados. Ojo: cambiar el grupo no da permisos; si además quieres que el grupo escriba, usa chmod: sudo chmod -R g+rw /srv/presupuestos. Y revisa que las personas estén en ese grupo con groups USUARIO.
Copiar el grupo de otro archivo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | chgrp | Comando | El comando para cambiar el grupo. |
| 2 | --reference=modelo.txt | Opción | Toma el grupo de modelo.txt en vez de escribir un nombre. |
| 3 | informe.doc | Argumento | El archivo que queda con el grupo de modelo.txt. |
informe.doc queda con exactamente el mismo grupo que modelo.txt. Sirve cuando ya sabes que ese grupo es el correcto y no quieres escribirlo, y evita el error de teclear mal el nombre.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -R--recursive | Cambia el grupo de la carpeta y de todo lo que tiene dentro. |
| -v--verbose | Muestra un mensaje por cada archivo que procesa. |
| -c--changes | Como -v, pero solo avisa cuando el grupo cambia de verdad. |
| -f--silent | Oculta la mayoría de los mensajes de error, por ejemplo cuando el archivo no existe. |
| -h--no-dereference | Cambia el enlace simbólico en sí, no el archivo al que apunta. |
| --reference=ARCHIVO | Copia el grupo de otro archivo en vez de escribir el nombre del grupo. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Usar chgrp como si fuera chown: sudo chgrp ana informe.doc. | chgrp solo acepta grupos, no usuarios, y responde chgrp: invalid group: 'ana'. Para cambiar el dueño usa chown: sudo chown ana:ventas informe.doc. |
| Escribir un grupo que no existe y no saber qué grupos hay. | chgrp avisa chgrp: invalid group. Los grupos del sistema están en /etc/group: míralos con cat /etc/group o con getent group. Crea el grupo antes con sudo groupadd NOMBRE. |
| Esperar que chgrp cambie también los permisos. | chgrp solo cambia el grupo; leer, escribir y ejecutar siguen igual. Si también quieres permisos, usa chmod: sudo chgrp ventas informe.doc y después sudo chmod g+rw informe.doc. |
| Copiar un archivo esperando que herede el grupo del original. | cp crea un archivo nuevo con tu usuario y tu grupo, no el del original. Para compartir el acceso da el grupo al archivo que ya existe (sudo chgrp ventas datos.csv) o usa enlaces duros, que sí comparten grupo e inode. |
Preguntas frecuentes
- ¿Cuál es la diferencia entre chown y chgrp?
- chown cambia quién es el dueño del archivo y, con dos puntos (chown ana:ventas), también el grupo. chgrp cambia solo el grupo y deja el dueño como estaba. chown siempre necesita sudo; chgrp no lo necesita si eres el dueño del archivo y perteneces al grupo destino.
- ¿Cómo cambio el grupo de una carpeta y todo lo que tiene?
- Agrega la opción -R: sudo chgrp -R grupo carpeta. Cambia la carpeta, sus archivos y todas sus subcarpetas. Sin -R solo cambia la carpeta, no lo que hay adentro.
- ¿Por qué chgrp me dice Operation not permitted?
- Porque o no eres el dueño del archivo o no perteneces al grupo destino. Para cambiar el grupo de un archivo ajeno, o para grupos del sistema como www-data o shadow, escribe el comando con sudo delante.
- ¿Cómo veo los grupos que existen en el sistema?
- Con cat /etc/group para verlos todos, o con getent group nombre para buscar uno. Para ver a qué grupos pertenece una persona está el comando groups: groups ana.
- ¿Cambiar el grupo da permisos de escritura?
- No. El grupo es quién, los permisos son qué puede hacer. El archivo solo es editable por el grupo si su permiso de escritura para el grupo está activo (por ejemplo 664 o 660). Para activarlo, combínalo con chmod: sudo chgrp ventas informe.doc y sudo chmod g+rw informe.doc.