Spesso quando si utilizza Linux, gli utenti pensano raramente a chi è il proprietario di un file. Quando si tratta di gestire un server, tuttavia, la situazione cambia. Per aumentare la sicurezza, il server ha un proprio utente. Non è raro che i server utilizzino lo stesso gruppo, come www-data. Vediamo ora come funziona questa funzione con i file e le directory. Presteremo particolare attenzione ai collegamenti simbolici, che possono causare problemi quando si utilizzano impostazioni non sicure.
Lo standard dei permessi dei file è arrivato a Linux da Unix. Quindi ogni oggetto ha un utente, un gruppo e descrive i diritti deglialtri utenti(altri). I permessi consistono in tre voci: lettura, scrittura, esecuzione. Il comando umask viene utilizzato per modificare i permessi, mentre i comandi chown vengono utilizzati per modificare direttamente il proprietario e il gruppo. Il comando ls può essere usato per visualizzare i permessi correnti.
Vista generale del comando chgrp:
$ chgrp [options] new_group file_name
Elenco delle opzioni comuni per il comando chgrp:
-h - lavora direttamente con i collegamenti simbolici stessi;--dereference - lavora con i file, non con i collegamenti simbolici stessi. Utilizzata per impostazione predefinita;-R - elaborazione ricorsiva di una directory con tutto il suo contenuto;-H - segue il collegamento simbolico e modifica gli attributi del file/della directory. Usato insieme al parametro -R;-L - segue il collegamento simbolico e continua l'elaborazione ricorsiva. Usato insieme al parametro -R;-P - quando incontra un collegamento simbolico, elabora solo quello. Usato insieme al parametro -R, è il valore predefinito;--reference=nome_file - utilizza il gruppo di esempio;-c - l'output cambia solo durante l'elaborazione;-v - visualizza le informazioni su ogni oggetto elaborato.L'esempio più semplice di utilizzo del comando chgrp. Il seguente cambia l'intero oggetto www-data per il file nella cartella corrente:
$ sudo chgrp www-data file.txt
E questo cambia il gruppo in www-data per la cartella della cartella:
$ sudo chgrp www-data folder

Il comando funziona in modo molto prevedibile, cambiando il gruppo. Gli oggetti della cartella rimangono invariati. Se vengono gestiti i collegamenti simbolici, i loro attributi rimangono invariati, ma l'oggetto ottiene un nuovo gruppo. Questo comportamento è simile alla gestione del parametro --dereference.
Ad esempio, questi comandi applicati ai collegamenti simbolici funzioneranno come mostrato nell'immagine:
$ sudo chgrp www-data sym_file.txt

Vediamo come funziona il parametro -h che modifica gli attributi di un collegamento simbolico:
$ sudo chgrp -h www-data sym_file

Il gruppo è stato impostato non solo sulla directory, ma anche su tutti i file al suo interno. Si noti che il comportamento è cambiato, ora quando si elabora un collegamento simbolico gli attributi vengono impostati per il collegamento stesso, non per l'oggetto.
Per capire la differenza tra i parametri -H e -L, vediamo un altro paio di esempi. Ricordiamo che devono essere usati insieme a -R:
$ sudo chgrp -RH www-data folder

Utilizzando -H il comportamento nell'elaborazione dei collegamenti simbolici è cambiato: ora vengono gestiti come se le funzioni fossero eseguite separatamente. Gli attributi dei riferimenti non cambiano, mentre cambiano gli attributi degli oggetti stessi e l'elaborazione ricorsiva si interrompe quando si passa a una directory.
$ sudo chgrp -RL www-data folder

Esegue una sola funzione: cambia il gruppo di file e directory.

Quando si elaborano i collegamenti simbolici, bisogna fare molta attenzione a non danneggiare il sistema.