Introduzione

Su Linux, ogni file è associato a un proprietario e un gruppo e dispone di autorizzazioni che determinano quali utenti possono leggere, scrivere o eseguire il file.

Con il comando chgrp si può modificare il gruppo proprietario di determinati file o cartelle. Questa guida spiega come utilizzare il comando chgrp.

Sintassi del comando chgrp

Il comando chgrp assume la forma seguente:

chgrp [OPTIONS] GROUP FILE
  • GROUP - nome del nuovo gruppo o gruppo ID (GID). Il GID numerico deve essere preceduto dal + simbolo.
  • FILE - nome di uno o più file.

A differenza del comando chown che consente di modificare il proprietario dell'utente e del gruppo, chgrp cambia solo il proprietario del gruppo.

Per scoprire a quale gruppo appartiene il file, utilizzare il comando ls -l. Solo il root o l'utente con privilegi sudo possono modificare il il gruppo proprietario di un file.

Come modificare il gruppo proprietario di un file

Per modificare il gruppo proprietario del file o di una directory, richiamare il comando chgrp seguito dal nuovo nome del gruppo e dal file di destinazione come argomenti.

Ad esempio, per cambiare il gruppo del file nome_file con nginx eseguire:

chgrp nginx nome_file

Se si esegue il comando con un utente non privilegiato, verrà visualizzato l'errore "Operation not permitted". Per eliminare gli errori, eseguire il comando con l'opzione -f. Per impostazione predefinita, in caso di successo chgrp non produce alcun output.

Puoi anche passare più file come argomenti al comando chgrp:

chgrp nginx cartella_1 nome_file_1 nome_file_2

Utilizzare l'opzione -v per ottenere informazioni sui file che vengono elaborati:

chgrp nginx nome_file_1 nome_file_2
changed group of 'nome_file_1' from www-data to nginx
group of 'nome_file_2' retained as nginx

Per stampare le informazioni solo su quei file che il gruppo cambia effettivamente usa -c invece di -v.

L'ID gruppo numerico (GID) può essere utilizzato al posto del nome utente. L'esempio seguente modifica il gruppo proprietario del file in un nuovo gruppo con GID di 1012:

chgrp +1012 nome_file

Di default il comando chgrp modifica il gruppo proprietario del file o cartella target dei collegamenti simbolici, non modifica direttamente il proprietario dei collegamenti simbolici stessi.

Ad esempio, se si tenta di modificare il gruppo del collegamento simbolico link_1 che punta a /etc/nome_file_1, il comando chgrp cambierà la proprietà del file o della directory a cui punta il collegamento simbolico:

chgrp nginx link_1

È probabile che si verifichi un errore simile al seguente: “Cannot dereference ‘link_1’: Permission denied”.

L'errore si verifica perché per impostazione predefinita sulla maggior parte delle distribuzioni Linux i collegamenti simbolici sono protetti e non è possibile operare sui file di destinazione.

Per modificare la proprietà del gruppo del collegamento simbolico stesso, utilizzare l'opzione -h:

chgrp -h nginx link_1

Come modificare in modo ricorsivo la proprietà del gruppo

Per modificare in modo ricorsivo il gruppo proprietario di tutti i file e le directory in una determinata directory, utilizzare l'opzione -R.

Ad esempio, il seguente comando cambierà il gruppo proprietario di tutti i file e le directory della directory /var/www nel  gruppo nginx:

chgrp -R nginx /var/www

Quando viene specificata l'opzione ricorsiva non si effettuano modifiche ai collegamenti simbolici. Per modificare la proprietà del gruppo dei collegamenti simbolici, passare anche  l'opzione -h:

chgrp -hR nginx /var/www

Conclusione

In questo tutorial abbiamo visto come utilizzare il comando chgrp su Linux. Per maggiori informazioni digitare nel proprio terminale il seguente comando:

man chgrp