Come utilizzare il comando chgrp su Linux

Il comando chgrp su Linux modifica la proprietà del gruppo di un file o di una directory. Perché usarlo invece di chown? A volte un coltellino svizzero è fantastico, ma quando hai davvero bisogno di un bisturi, solo un bisturi va bene.

Quando dovresti usare chgrp

Utilizzare il comando chgrp per modificare la proprietà del gruppo di un file o di una directory. Il comando chown consente di modificare il proprietario dell’utente e il proprietario del gruppo di un file o di una directory. Allora perché dovresti aver bisogno o usare chgrp?

Beh, per prima cosa, è facile. Usare chown per modificare solo l’impostazione del proprietario del gruppo è un po ‘controintuitivo. Devi stare molto attento con la sintassi. Dipende dalla corretta collocazione dei due punti “:”. Mettilo male e non stai facendo il cambiamento che pensavi di essere.

La sintassi di chgrp è tutto sommato più semplice. Ha anche una bella funzionalità che ti dice in termini semplici quali modifiche ha appena apportato.

È uno strumento appositamente costruito e dedicato per l’attività da svolgere. chgrp abbraccia completamente il principio di progettazione Unix di fare una cosa e farla bene. Vediamo cosa ha da offrire.

Modifica della proprietà di gruppo di un file

Modificare la proprietà di gruppo di un file è molto semplice. Devi usare sudo con chgrp. I gruppi non sono di proprietà degli utenti, quindi se un file o una directory viene spostato da un gruppo a un altro non è una decisione che spetta all’utente medio. Questo è un lavoro per qualcuno con privilegi di root.

Stiamo per cambiare la proprietà del gruppo di un file sorgente C chiamato “gc.c.” Lo cambieremo nel gruppo “devteam”.

Possiamo controllare gli attuali valori di proprietà usando ls con l’opzione -l (elenco lungo).

ls -l

Questo è il comando per modificare la proprietà del gruppo. Digita sudo, uno spazio, chgrp, uno spazio, il nome del gruppo che imposteremo come proprietario del gruppo, uno spazio e il nome del file.

sudo chgrp devteam gc.c

Verificheremo che la modifica sia stata effettuata utilizzando nuovamente ls -l.

ls -l

Possiamo vedere che la proprietà del gruppo è stata modificata da “dave” a “devteam”.

Per modificare la proprietà del gruppo per un insieme di file contemporaneamente, è possibile utilizzare i caratteri jolly. Cambiamo la proprietà del gruppo per tutti i file sorgente C nella directory corrente. Useremo questo comando:

sudo chgrp devteam *.c

Possiamo verificare che la modifica sia stata apportata come previsto utilizzando ls -l.

ls -l

sudo chgrp devteam * .c in una finestra di terminale

Tutti i file sorgente C in questa directory sono stati modificati in modo che la proprietà del gruppo sia “devteam”.

Usando l’opzione -c (modifiche) chgrp elencherà le modifiche apportate a ciascun file. Supponiamo di aver commesso un errore, volevamo che i file sorgente C avessero la proprietà del gruppo impostata su “researchlab”. Correggiamolo ora. Useremo questo comando:

sudo chgrp -c researchlab *.c

sudo chgrp -c researchlab * .c in una finestra di terminale

Le modifiche vengono apportate per noi e ognuna viene elencata mentre accade, permettendoci di verificare che ciò che abbiamo modificato sia corretto.

Modifica della proprietà di gruppo di una directory

Modificare la proprietà di gruppo di una directory è altrettanto semplice. Possiamo utilizzare questo comando per modificare la proprietà del gruppo per la directory “backup”.

sudo chgrp -c devteam ./backup

Per essere chiari, questo comando cambierà la proprietà del gruppo della directory stessa, non dei file all’interno della directory. Useremo ls -l con l’opzione -d (directory) per verificare che sia così.

ls -l -d

sudo chgrp -c devteam ./backup in una finestra di terminale

La proprietà del gruppo della directory stessa è stata modificata in “devteam”.

L’opzione ricorsiva

Se vogliamo modificare la proprietà del gruppo per i file e le directory archiviati in una directory, possiamo utilizzare l’opzione -R (ricorsiva). Ciò farà sì che chgrp modifichi la proprietà del gruppo per tutti i file e le sottodirectory sotto la directory di destinazione.

Proviamo con la directory “backup”. Ecco il comando:

sudo chgrp -R devteam ./backup

Esamineremo i file in una delle sottodirectory annidate con il comando ls e controlleremo anche le impostazioni di una delle sottodirectory annidate usando ls.

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

sudo chgrp -R devteam ./backup in una finestra di terminale

Possiamo vedere che la proprietà del gruppo è stata modificata sia per i file nelle sottodirectory nidificate che per le sottodirectory nidificate.

Utilizzo di un file di riferimento

Finora abbiamo detto esplicitamente a chgrp il nome del gruppo che desideriamo usare. Possiamo anche utilizzare chgrp in un modo che dice “imposta la proprietà di gruppo di questo file con la stessa proprietà di gruppo di quel file”.

Impostiamo la proprietà del gruppo di “gc.h” in modo che sia uguale a “gc.c.”

Possiamo controllare le impostazioni correnti di “gc.c” e “gc.h” usando ls.

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

L’opzione che dobbiamo usare è l’opzione –reference. La proprietà del gruppo viene copiata dal file di riferimento all’altro file. Abbi cura di ottenere i file nel modo giusto.

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

Useremo ls per verificare che le impostazioni siano state trasferite a “gc.h”.

ls -l gc.h

sudo chgrp --reference = gc.c gc.h in una finestra di terminale

Il file “gc.h” ora ha la stessa proprietà di gruppo di “gc.c.”

Utilizzo di chgrp con collegamenti simbolici

Possiamo usare chgrp per cambiare la proprietà del gruppo dei link simbolici, o del file puntato dal link simbolico.

Per questo esempio, abbiamo creato un file collegamento simbolico chiamato “link_pulsante”. Questo punta a un file chiamato “./backup/images/button_about.png”. Per modificare la proprietà di gruppo del file, è necessario utilizzare l’opzione –dereference. Ciò cambierà le impostazioni per il file e lascerà invariato il collegamento simbolico.

Controlliamo le impostazioni per il collegamento simbolico usando ls -l.

ls -l button_link

Il comando per modificare il file è:

sudo chgrp --dereference devteam button_link

Verificheremo che il collegamento simbolico sia invariato utilizzando ls e controlleremo anche le impostazioni di proprietà del gruppo per il file.

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

sudo chgrp --dereference devteam button_link in una finestra di terminale

Il collegamento simbolico è rimasto invariato e la proprietà del gruppo “button_about.png” è stata modificata.

Per modificare la proprietà di gruppo del collegamento simbolico stesso, dobbiamo utilizzare l’opzione –no-dereference.

Il comando da usare è:

sudo chgrp --no-dereference devteam button_link

Useremo ls -l per verificare che la nuova proprietà del gruppo sia stata impostata per il collegamento simbolico.

ls -l button-link

sudo chgrp --no-dereference devteam button_link in una finestra di terminale

Questa volta l’elemento interessato era il collegamento simbolico stesso, non il file a cui punta.

Bello e semplice

Semplice è buono. Significa che c’è meno da ricordare e meno con cui confondersi. Ciò dovrebbe significare meno errori.