Introduzione

Il comando chown consente di modificare l'utente e/o il gruppo proprietario di un determinato file, directory o collegamento simbolico.

In Linux, tutti i file sono associati a un proprietario e un gruppo e assegnati con diritti di accesso e di autorizzazione per il proprietario del file, i membri del gruppo e altri.

In questo tutorial mostreremo come usare il comando chown attraverso esempi pratici.

Usare il comando chown

Prima di vedere come utilizzare il comando chown, iniziamo ad esaminare la sintassi di base.

Le espressioni del comando chown assumono la forma seguente:

chown [OPTIONS] USER[:GROUP] FILE(s)

USER è il nome utente o user ID (UID) del nuovo proprietario. GROUP è il nome del nuovo gruppo o l'ID gruppo (GID). FILE(s) è il nome di uno o più file, directory o collegamenti. Gli ID numerici devono essere preceduti dal simbolo "+".

  • USER - Se viene specificato solo l'utente, l'utente specificato diventerà il proprietario dei file indicati, il gruppo proprietario non verrà modificato.
  • USER: - Quando il nome utente è seguito da due punti ":" e il nome del gruppo non viene assegnato, l'utente diventerà il proprietario dei file e il gruppo proprietario dei file verrà cambiato con il gruppo associato all'utente.
  • USER:GROUP - Se vengono specificati sia l'utente che il gruppo (senza spazio tra loro), il proprietario dei file diventerà l'utente specificato e il gruppo proprietario cambierà con quello specificato.
  • :GROUP - Se l'utente viene omesso e il gruppo è preceduto da due punti ":", solo il gruppo proprietario dei file viene cambiato con il gruppo specificato.
  • : Se viene specificato solo il carattere ":" , senza specificare l'utente e il gruppo, non viene apportata alcuna modifica.

Per impostazione predefinita, in caso di successo, chown non produce alcun output.

Utilizzare il comando ls -l per identificare chi è il proprietario di un file o a quale gruppo appartiene il file:

ls -l filename.txt
-rw-r--r-- 12 noviello noviello 1239291 Aug  8 03:04 filename.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> Group
                +-------------------> Owner

Solo il root o l'utente con privilegi sudo può cambiare il gruppo proprietario di un file.

Modificare il proprietario di un file

Per modificare il proprietario di un file, utilizzare il comando chown seguito dal nome utente del nuovo proprietario e dal file di destinazione come argomento:

chown USER FILE

Ad esempio, il comando seguente modificherà il proprietario di un file denominato file1 in un nuovo proprietario denominato noviello:

chown noviello file1

Per modificare il proprietario di più file o directory, specificarli come un elenco separato da spazi. Il comando seguente modifica la proprietà di un file denominato file1 e directory dir1 in un nuovo proprietario denominato noviello:

chown noviello file1 dir1

L'ID numerico dell'utente (UID) può essere utilizzato al posto del nome utente. L'esempio seguente cambierà la proprietà di un file denominato file2 in un nuovo proprietario con UID di 1000:

chown 1000 file2

Se l'utente noviello ha come UID "1000" e l'username di altro utente è "1000" ma ha UID 1002, utilizzare il parametro "+" cambia inequivocabilmente il proprietario in noviello.

chown +1000 file2

Modificare il proprietario e il gruppo di un file

Per modificare sia il proprietario che il gruppo di un file, utilizzare il comando chown seguito dal nuovo proprietario e dal gruppo separati da due punti ":" senza spazi intermedi e il file di destinazione.

chown USER:GROUP FILE

Il seguente comando cambierà il proprietario di un file denominato file1 in un nuovo proprietario denominato noviello e gruppo users:

chown noviello:users file1

Se si omette il nome del gruppo dopo i due punti ":", il gruppo del file viene modificato nel gruppo di accesso dell'utente specificato:

chown noviello: file1

Modificare il gruppo di un file

Per cambiare solo il gruppo di un file usa il comando chown seguito da due punti ":" e dal nome del nuovo gruppo (senza spazio tra loro) e il file di destinazione come argomento:

chown :GROUP FILE

Il seguente comando modificherà il gruppo proprietario di un file denominato file1 in www-data:

chown :www-data file1

Un altro comando che è possibile utilizzare per modificare il gruppo proprietario del file è chgrp.

Modificare il proprietario dei collegamenti simbolici

Quando l'opzione ricorsiva non viene utilizzata, il comando chown modifica il gruppo proprietario dei file a cui punta il collegamento simbolico, non i collegamenti simbolici stessi.

Ad esempio, se si tenta di modificare il proprietario e il gruppo del collegamento simbolico a symlink1 cui punta /var/www/file1, chown cambierà il proprietario del file o della directory a cui punta il collegamento simbolico:

chown www-data: symlink1

È probabile che invece di modificare il proprietario del file di destinazione, si ottenga il seguente errore “cannot dereference ‘symlink1’: 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. Questa opzione è specificata in /proc/sys/fs/protected_symlinks. Se il parametro è impostato su 1 significa abilitato e 0 disabilitato. Si consiglia di non disabilitare la protezione del collegamento simbolico.

Per modificare il gruppo prorpietario del collegamento simbolico stesso, utilizzare l'opzione -h:

chown -h www-data symlink1

Modificare in modo ricorsivo il proprietario di un file

Per operare in modo ricorsivo su tutti i file e le directory nella directory specificata, utilizzare l' opzione -R( --recursive):

chown -R USER:GROUP DIRECTORY

L'esempio seguente cambierà il proprietario di tutti i file e le sottodirectory della directory /var/www in un nuovo proprietario e gruppo denominato www-data:

chown -R www-data: /var/www

Se la directory contiene collegamenti simbolici, utilizza l'opzione -h:

chown -hR www-data: /var/www

Utilizzando un file di riferimento

L' opzione --reference=ref_file consente di modificare l'utente e il gruppo proprietario di determinati file in modo che siano uguali a quelli del file di riferimento specificato ( ref_file). Se il file di riferimento è un collegamento simbolico chown utilizzerà l'utente e il gruppo del file di destinazione.

chown --reference=REF_FILE FILE

Ad esempio, il comando seguente assegnerà il gruppo e l'utente proprietario del file1 al file2

chown --reference=file1 file2

Conclusione

chown è un'utilità della riga di comando Linux/UNIX per modificare l'utente e/o il gruppo proprietario del file.

Per saperne di più sul comando chown digita il seguente comando:

man chown