Cómo usar el comando chgrp en Linux

Una ventana de terminal de Linux en una computadora portátil
Fatmawati Achmad Zaenuri / Shutterstock.com

El chgrpcomando en Linux cambia la propiedad del grupo de un archivo o directorio. ¿Por qué usarlo en lugar de chown? A veces, una navaja suiza es genial, pero cuando realmente necesitas un bisturí, solo un bisturí es suficiente.

Cuándo debe usar chgrp

Utilice el chgrpcomando para cambiar la propiedad del grupo de un archivo o directorio. El chowncomando le permite cambiar el propietario del usuario y el propietario del grupo de un archivo o directorio. Entonces, ¿por qué necesitarías o usarías chgrp?

Bueno, por un lado, es fácil. Usarchown para cambiar solo la configuración del propietario del grupo es un poco contradictorio. Tienes que tener mucho cuidado con la sintaxis. Depende de la correcta colocación de dos puntos “:”. Pierde eso, y no estás haciendo el cambio que pensabas que estabas.

La sintaxis de chgrpes mucho más sencilla . También tiene una característica interesante que le dice en términos simples qué cambios acaba de hacer.

Es una herramienta especialmente diseñada y dedicada para la tarea en cuestión. chgrpadopta completamente el principio de diseño de Unix de hacer una cosa y hacerlo bien. Veamos qué tiene para ofrecer.

Cambiar la propiedad grupal de un archivo

Cambiar la propiedad grupal de un archivo es muy sencillo. Debes usar  sudo con chgrp. Los grupos no son propiedad de los usuarios, por lo que si un archivo o directorio se mueve de un grupo a otro no es una decisión que corresponda al usuario promedio. Ese es un trabajo para alguien con privilegios de root.

Relacionado:  Linux 5.0 "Shy Crocodile" llega con el cifrado Adiantum de Google

Vamos a cambiar la propiedad del grupo de un archivo fuente de C llamado «gc.c.» Lo cambiaremos por el grupo «devteam».

Podemos verificar los valores de propiedad actuales usando ls la -lopción (lista larga).

ls -l

Este es el comando para cambiar la propiedad del grupo. Escriba  sudo, un espacio,  chgrpun espacio, el nombre del grupo que vamos a establecer como propietario del grupo, un espacio y el nombre del archivo.

sudo chgrp devteam gc.c

Comprobaremos que el cambio se ha realizado utilizando de ls -lnuevo.

ls -l

sudo chgrp devteam gc.c en una ventana de terminal

Podemos ver que la propiedad del grupo ha cambiado de «dave» a «devteam».

Para cambiar la propiedad del grupo para un conjunto de archivos a la vez, puede usar comodines. Cambiemos la propiedad del grupo para todos los archivos fuente de C en el directorio actual. Usaremos este comando:

sudo chgrp devteam * .c

Podemos comprobar que el cambio se ha realizado como esperábamos utilizando ls -l.

ls -l

sudo chgrp devteam * .c en una ventana de terminal

Todos los archivos fuente de C en este directorio se han modificado para que la propiedad de su grupo sea «devteam».

Al usar la -copción (cambios), chgrpse enumerarán los cambios que ha realizado en cada archivo. Supongamos que cometimos un error, queríamos que los archivos de origen de C tuvieran la propiedad de su grupo establecida en «researchlab». Corregiremos eso ahora. Usaremos este comando:

sudo chgrp -c researchlab * .c

sudo chgrp -c researchlab * .c en una ventana de terminal

Los cambios se realizan por nosotros, y cada uno se enumera a medida que ocurre, lo que nos permite verificar que lo que hemos cambiado es correcto.

Cambio de la propiedad grupal de un directorio

Cambiar la propiedad de grupo de un directorio es igual de sencillo. Podemos usar este comando para cambiar la propiedad del grupo para el directorio «respaldo».

sudo chgrp -c devteam ./backup

Para ser claros, este comando cambiará la propiedad del grupo del directorio en sí, no los archivos dentro del directorio. Usaremos ls -lcon la -dopción (directorio) para verificar que este es el caso.

ls -l -d

sudo chgrp -c devteam ./backup en una ventana de terminal

La propiedad del grupo del directorio en sí se ha cambiado a «devteam».

Relacionado:  Cómo eliminar archivos y directorios en la terminal de Linux

La opción recursiva

Si queremos cambiar la propiedad del grupo para los archivos y directorios almacenados dentro de un directorio, podemos usar la -Ropción (recursiva). Esto hará chgrpque cambie la propiedad del grupo para todos los archivos y subdirectorios debajo del directorio de destino.

Intentemos esto con el directorio «backup». Aquí está el comando:

sudo chgrp -R devteam ./backup

Revisaremos los archivos en uno de los subdirectorios anidados con el lscomando, y también verificaremos la configuración de uno de los subdirectorios anidados usando ls.

ls -l ./backup/images
ls -l -d ./backup/images

sudo chgrp -R devteam ./backup en una ventana de terminal

Podemos ver que la propiedad del grupo se ha cambiado tanto para los archivos de los subdirectorios anidados como para los subdirectorios anidados.

Usando un archivo de referencia

Hasta ahora, hemos estado diciendo explícitamente chgrpel nombre del grupo que deseamos usar. También podemos usar chgrpde una manera que diga «establecer la propiedad de grupo de este archivo en la misma propiedad de grupo que  ese archivo».

Establezcamos la propiedad del grupo de «gc.h» para que sea la misma que «gc.c.»

Podemos comprobar la configuración actual de “gc.c” y “gc.h” usando ls.

ls -l gc.c
ls -l gc.h

La opción que necesitamos usar es la --referenceopción. La propiedad del grupo se copia del archivo de referencia al otro archivo. Tenga cuidado de colocar los archivos correctamente.

sudo chgrp --reference = gc.c gc.h

Usaremos lspara verificar que la configuración se haya transferido a «gc.h.»

ls -l gc.h

sudo chgrp --reference = gc.c gc.h en una ventana de terminal

El archivo «gc.h» ahora tiene la misma propiedad de grupo que «gc.c.»

Usando chgrp con enlaces simbólicos

Podemos utilizar chgrppara cambiar la propiedad del grupo de enlaces simbólicos, o del archivo al que apunta el enlace simbólico.

Relacionado:  Cómo proteger su servidor Linux con fail2ban

Para este ejemplo, hemos creado un enlace simbólico llamado «button_link». Esto apunta a un archivo llamado «./backup/images/button_about.png». Para cambiar la propiedad grupal del archivo, debemos usar la --dereferenceopción. Esto cambiará la configuración del archivo y dejará el enlace simbólico sin cambios.

Revisemos la configuración del enlace simbólico usando ls -l.

ls -l button_link

El comando para cambiar el archivo es:

sudo chgrp --dereference devteam button_link

Verificaremos que el enlace simbólico no haya cambiado usando ls, y también verificaremos la configuración de propiedad del grupo para el archivo.

ls -l button_link
ls -l ./backup/images/button_about.png

sudo chgrp --dereference devteam button_link en una ventana de terminal

El enlace simbólico no ha cambiado y el archivo «button_about.png» ha modificado su propiedad de grupo.

Para cambiar la propiedad grupal del enlace simbólico en sí, debemos usar la --no-dereferenceopción.

El comando a utilizar es:

sudo chgrp --no-dereference devteam button_link

Usaremos ls -l para verificar que la nueva propiedad del grupo se haya establecido para el enlace simbólico.

ls -l botón-enlace

sudo chgrp --no-dereference devteam button_link en una ventana de terminal

Esta vez, el elemento afectado fue el enlace simbólico en sí, no el archivo al que apunta.

Agradable y simple

Lo simple es bueno. Significa que hay menos que recordar y menos con qué confundirse. Eso debería significar menos errores.