Comandos LinuxExplicados en español
/
Ficha18 / 104
Categoría
Permisos
Ejemplos
5
Ver también
chown · chmod · groups · sudo

chgrp

change group (cambiar grupo)

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.

Sintaxischgrp [opciones] GRUPO ARCHIVO...
Precaución

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.

§ 1

Despiece

5 ejemplos
Cambiar el grupo de un archivo

Cambiar el grupo de un archivo

4 piezas
Lámina01 / 05
Comandosudo chgrp ventas informe.doc
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1sudoComandoEjecuta como administrador; cambiar el grupo de un archivo que no es tuyo lo requiere.
2chgrpComandoEl comando para cambiar el grupo.
3ventasValorEl grupo nuevo. Tiene que existir: lo ves con getent group ventas.
4informe.docArgumentoEl archivo cuyo grupo cambia. El dueño no se toca.
Resultado

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

3 piezas
Lámina02 / 05
Comandochgrp ventas informe.doc
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chgrpComandoEl comando para cambiar el grupo.
2ventasValorEl grupo destino.
3informe.docArgumentoEl archivo que ya es tuyo y del que eres miembro del grupo destino.
Resultado

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

5 piezas
Lámina03 / 05
Comandosudo chgrp -R www-data /var/www/mi-sitio
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1sudoComandoLas carpetas de /var son de root.
2chgrpComandoEl comando para cambiar el grupo.
3-ROpciónRecursivo: aplica el cambio a la carpeta y a todo lo que contiene.
4www-dataValorEl grupo con el que corre el servidor web en Debian y Ubuntu.
5/var/www/mi-sitioArgumentoLa carpeta del sitio, con sus subcarpetas y archivos.
Resultado

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

5 piezas
Lámina04 / 05
Comandosudo chgrp -R empleados /srv/presupuestos
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1sudoComandoHace falta root para cambiar archivos ajenos.
2chgrpComandoEl comando para cambiar el grupo.
3-ROpciónRecursivo: también los archivos de adentro.
4empleadosValorEl grupo que comparten las personas que trabajan en esa carpeta.
5/srv/presupuestosArgumentoLa carpeta compartida.
Resultado

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

3 piezas
Lámina05 / 05
Comandochgrp --reference=modelo.txt informe.doc
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chgrpComandoEl comando para cambiar el grupo.
2--reference=modelo.txtOpciónToma el grupo de modelo.txt en vez de escribir un nombre.
3informe.docArgumentoEl archivo que queda con el grupo de modelo.txt.
Resultado

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.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-R--recursiveCambia el grupo de la carpeta y de todo lo que tiene dentro.
-v--verboseMuestra un mensaje por cada archivo que procesa.
-c--changesComo -v, pero solo avisa cuando el grupo cambia de verdad.
-f--silentOculta la mayoría de los mensajes de error, por ejemplo cuando el archivo no existe.
-h--no-dereferenceCambia el enlace simbólico en sí, no el archivo al que apunta.
--reference=ARCHIVOCopia el grupo de otro archivo en vez de escribir el nombre del grupo.
§ 3

Fallas comunes

FallaRemedio
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.
§ 4

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.
§ 5

Ver también