Ricerca nel sito web

Tutorial sui comandi di Linux Chown per principianti (12 esempi)


Su questa pagina

  1. Spiegazione del comando chown di Linux
  2. D1. Come cambiare il proprietario di un file?
  3. Q2. Come cambiare il gruppo di un file?
  4. Q3. Come modificare sia il proprietario che il gruppo di un file?
  5. Q4. Come modificare il proprietario o il gruppo (o entrambi) dopo aver controllato il proprietario/gruppo esistente?
  6. D5. Come scegliere le informazioni sul proprietario/gruppo da un file di riferimento?
  7. D6. Come far funzionare chown su file e directory in modo ricorsivo?
  8. D7. Come fare in modo che chown elimini i messaggi di errore?
  9. D8. Come modificare la proprietà del gruppo nel gruppo di accesso dell'utente specificato?
  10. D9. Come funziona chown con i collegamenti simbolici?
  11. D10. Come modificare il proprietario e il gruppo per una directory?
  12. D11. È possibile utilizzare UID e GID al posto dei nomi di utenti e gruppi?
  13. D12. Come fare in modo che chown visualizzi i dettagli dell'operazione in output?
  14. Conclusione

In Linux, a volte potresti voler modificare il proprietario e le informazioni relative al gruppo per un file o una directory. Se sei un principiante della riga di comando e vuoi sapere come puoi apportare tali modifiche tramite la riga di comando, sarai felice di sapere che esiste un comando - soprannominato chown - che ti consente di farlo.

Prima di iniziare con il tutorial del comando chown, vale la pena ricordare che tutti gli esempi e le istruzioni menzionati qui sono stati testati su Ubuntu 22.04 LTS e Debian 11.

Spiegazione del comando chown di Linux

Come già accennato all'inizio, il comando chown consente di modificare il proprietario e il gruppo del file tramite la riga di comando. Di seguito la sintassi generica dei comandi:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

Ecco cosa dice la pagina man degli strumenti a riguardo:

If only  an  owner  (a user  name or numeric user ID) is given, that user is made the owner of each
given file, and the files' group is not changed.  If the owner  is followed  by  a  colon  and a
group name (or numeric group ID), with no spaces between them, the group ownership of the  files  is
changed  as well.  If a colon but no group name follows the user name, that user is made the owner
of the files and the group of the files  is  changed  to that  user's  login  group. If the colon
and group are given, but the owner is omitted, only the group of the files is changed; in this case,
chown  performs  the same function as chgrp.  If only a colon is given, or if the entire operand is
empty, neither the owner nor the  group  is changed.

I seguenti esempi di domande e risposte ti daranno una buona idea di come funziona il comando chown:

Q1. Come cambiare il proprietario di un file?

Considera il seguente esempio:

Qui, il proprietario del file è himanshu e anche il gruppo a cui appartiene è himanshu. Ora, per cambiare il proprietario in, diciamo root, usa il seguente comando:

chown root file1

Lo screenshot seguente conferma che il proprietario è stato modificato in root.

D2. Come cambiare il gruppo di un file?

La modifica di un gruppo è simile alla modifica del proprietario. L'unica differenza è nella sintassi del comando, che è la seguente:

chown :[group-name] [file-name]

Supponiamo quindi che il requisito sia quello di modificare il gruppo di file1 in root. Allora il comando sarebbe:

chown :root file1

Lo screenshot seguente mostra che il gruppo è stato modificato correttamente da himanshu a root.

Nota: se ti stai chiedendo perché è stato utilizzato il comando sudo o se sei un principiante sudo, dovresti prima seguire il nostro tutorial su questo strumento.

D3. Come modificare sia il proprietario che il gruppo di un file?

Per modificare sia il proprietario che il gruppo di file, utilizzare la seguente sintassi:

chown [new-owner]:[new-group] [file-name]

Quindi, nel nostro caso, per cambiare il proprietario e il gruppo esistenti da root a himanshu, useremo il seguente comando:

chown himanshu:himanshu file1

Lo screenshot seguente mostra il comando precedente in azione:

D4. Come modificare il proprietario o il gruppo (o entrambi) dopo aver controllato il proprietario/gruppo esistente?

Potrebbero esserci situazioni in cui potresti voler prima eseguire un controllo incrociato del proprietario/gruppo esistente di un file prima di apportare qualsiasi modifica. Quindi, in questi casi, puoi utilizzare l'opzione della riga di comando --from. Questa opzione richiede di menzionare il nome del proprietario/gruppo che si desidera verificare.

chown --from=[curr-own]:[curr-group] [new-owner]:[new-group] [filename]

Per esempio:

chown --from=root:himanshu himanshu:root file1

Il comando precedente verificherà se il proprietario esistente è root e il gruppo è himanshu. In caso affermativo, il proprietario verrà modificato in himanshu e il gruppo diventerà root.

Q5. Come scegliere le informazioni sul proprietario/gruppo da un file di riferimento?

Potrebbero anche esserci situazioni in cui potresti volere che chown raccolga le informazioni relative al proprietario e al gruppo da un file, invece di inserirle manualmente nella riga di comando. In questi casi, puoi utilizzare l'opzione della riga di comando --reference. Questa opzione richiede di inserire il nome del file di riferimento.

chown --reference=[ref-file-name] [filename]

Per esempio:

chown --reference=file2 file1

Quindi il comando precedente copierà le informazioni sul proprietario e sul gruppo da file2 a file1.

D6. Come far funzionare chown su file e directory in modo ricorsivo?

Per fare in modo che il comando chown operi in modo ricorsivo su file e directory, utilizzare l'opzione della riga di comando -R.

chown -R [new-owner]:[new-group] [directory-name-or-path]

Per coloro che non sono a conoscenza, ricorsivo significa che l'operazione verrà eseguita per tutti i file nella directory data, così come per i file e le directory all'interno di tutte le sottodirectory.

Q7. Come fare in modo che chown elimini i messaggi di errore?

Ci possono essere momenti in cui il comando chown che esegui dà un errore. Ad esempio, il seguente comando quando eseguito sul mio sistema:

chown --from=himanshu:himanshu himanshu:root file4

ha dato il seguente errore:

chown: cannot access 'file4': No such file or directory

Supponiamo ora che il requisito sia che lo strumento non debba visualizzare tali errori. Quindi questo può essere reso possibile utilizzando l'opzione della riga di comando -f.

Lo screenshot di cui sopra conferma che l'opzione della riga di comando -f sopprime errori/avvisi.

D8. Come modificare la proprietà del gruppo nel gruppo di accesso dell'utente specificato?

Questo può essere fatto usando la sintassi [user/owner]:. Ad esempio, il seguente comando:

chown himanshu: file1

Si assicurerà che la proprietà venga assegnata a himanshu e che il gruppo venga modificato nel gruppo di accesso di himanshu. Si noti che questo è diverso dal caso in cui i due punti (:) non vengono utilizzati, poiché in quel caso (spiegato in Q1 sopra), il gruppo rimane invariato.

Un'altra cosa degna di nota qui è che se usi solo i due punti (:) senza specificare un proprietario o un gruppo, non avrà luogo alcun cambiamento. Per esempio:

chown : file1

Questo comando non avrà alcun effetto sulla proprietà del file da parte di utenti o gruppi.

D9. Come funziona chown con i collegamenti simbolici?

Per impostazione predefinita, se provi a modificare la proprietà dell'utente e del gruppo di un collegamento simbolico, non ci sarà alcun cambiamento. Invece, il file a cui si collega riceverà queste modifiche.

Ad esempio, lo screenshot seguente mostra che ho creato un collegamento simbolico link1 le cui proprietà di utenti e gruppi sono impostate su himanshu. Quindi ho eseguito il comando chown per cambiare utente e gruppo in root. Ma il comando non ha avuto alcun effetto sul file di collegamento simbolico, invece, sul suo file1 (a cui punta il collegamento simbolico) le cui proprietà di utenti e gruppi sono state modificate.

Tuttavia, se lo desideri, puoi ignorare questo comportamento predefinito utilizzando l'opzione -h.

Q10. Come modificare il proprietario e il gruppo per una directory?

Proprio come lo fai per i file. Di seguito è riportato un esempio:

chown root:root ./test-dir/

Tieni presente che puoi verificare in modo incrociato la modifica del proprietario e del gruppo per una directory utilizzando il comando stat: i campi UID e GID nell'output mostrano i nomi di utenti e gruppi.

Ad esempio, nel mio caso, l'output mostrava chiaramente la modifica della proprietà del gruppo di utenti.

  File: test-dir
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 808h/2056d    Inode: 11928001    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-08-07 10:31:04.867467573 +0530
Modify: 2018-08-07 10:30:53.651807123 +0530
Change: 2018-08-07 10:32:49.644427930 +0530
 Birth: -

Nota che se stai apportando modifiche ricorsive (fai riferimento alle domande e risposte che discutono dell'opzione -R) e hai a che fare con collegamenti simbolici, hai a disposizione le seguenti opzioni:

       The following options modify how a hierarchy is traversed when  the  -R
       option  is  also  specified.   If  more than one is specified, only the
       final one takes effect.

       -H     if a command line argument is a symbolic link  to  a  directory,
              traverse it

       -L     traverse every symbolic link to a directory encountered

       -P     do not traverse any symbolic links (default)

D11. È possibile utilizzare UID e GID al posto dei nomi di utenti e gruppi?

Sì, puoi utilizzare l'ID utente e l'ID gruppo invece dei nomi. La sintassi del comando rimane comunque la stessa.

Per esempio:

chown 1000:1000 file1

Il comando precedente cambierà la proprietà dell'utente e del gruppo all'utente con UID 1000 e al gruppo con GID 1000.

Q12. Come fare in modo che chown visualizzi i dettagli dell'operazione in output?

Se si desidera che il comando chown visualizzi i dettagli dell'operazione che esegue, utilizzare l'opzione della riga di comando -v.

Ad esempio, questo comando:

sudo chown howtoforge:howtoforge link1 -v

produce il seguente output:

changed ownership of 'link1' from root:root to howtoforge:howtoforge

Ora, c'è un'altra opzione -c che agisce anche come -v, solo che non mostra alcun dettaglio quando non è cambiato nulla.

Conclusione

Il comando chown, come molti di voi probabilmente concorderanno, non è difficile da usare. Ciò che è ancora meglio è quel comando cd. In caso di dubbi o domande, lascia un commento qui sotto.