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.