GNU/Linux >> Linux Esercitazione >  >> Linux

12 Esempi di comandi Chown Linux per cambiare proprietario e gruppo

Il concetto di proprietario e gruppi per i file è fondamentale per Linux. Ogni file è associato a un proprietario e un gruppo. Puoi usare i comandi chown e chgrp per cambiare il proprietario o il gruppo di un particolare file o directory.

In questo articolo, discuteremo del comando 'chown' poiché copre la maggior parte di 'chgrp anche il comando '.

Anche se conosci già questo comando, probabilmente uno degli esempi menzionati di seguito potrebbe essere nuovo per te.

1. Cambia il proprietario di un file

# ls -lart tmpfile
-rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile

# chown root tmpfile

# ls -l tmpfile
-rw-r--r-- 1 root family 0 2012-05-22 20:03 tmpfile

Quindi vediamo che il proprietario del file è stato cambiato da "himanshu" a "root".

2. Cambia il gruppo di un file

Tramite il comando chown è anche possibile modificare il gruppo (a cui appartiene un file).

# ls -l tmpfile
-rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile

# chown :friends tmpfile

# ls -l tmpfile
-rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile

Se osservi da vicino, il gruppo del file è cambiato da "famiglia" ad "amici". Quindi vediamo che semplicemente aggiungendo un ":" seguito dal nuovo nome del gruppo, il gruppo del file può essere modificato.

3. Cambia sia il proprietario che il gruppo

# ls -l tmpfile
-rw-r--r-- 1 root family 0 2012-05-22 20:03 tmpfile

# chown himanshu:friends tmpfile

# ls -l tmpfile
-rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile

Quindi vediamo che usando la sintassi ': ', il proprietario e il gruppo possono essere modificati in una volta sola.

4. Utilizzo del comando chown sul file di collegamento simbolico

Ecco un link simbolico :

# ls -l tmpfile_symlnk
lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile

Quindi vediamo che il collegamento simbolico 'tmpfile_symlink' si collega al file 'tmpfile'.

Vediamo cosa succede se il comando chown viene emesso su un collegamento simbolico:

# chown root:friends tmpfile_symlnk

# ls -l tmpfile_symlnk
lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile

# ls -l tmpfile
-rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile

Quando è stato emesso il comando chown sul collegamento simbolico per modificare il proprietario e il gruppo, è il referente del collegamento simbolico, ad esempio "tmpfile" il cui proprietario e gruppo sono stati modificati. Questo è il comportamento predefinito del comando chown. Inoltre, esiste un flag "–dereference" per lo stesso.

5. Utilizzo del comando chown per modificare forzatamente il proprietario/gruppo del file simbolico.

Usando il flag '-h', puoi cambiare forzatamente il proprietario o il gruppo di un link simbolico come mostrato di seguito.

# ls -l tmpfile_symlnk
lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile

# chown -h root:friends tmpfile_symlnk

# ls -l tmpfile_symlnk
lrwxrwxrwx 1 root friends 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile

6. Cambia proprietario solo se un file è di proprietà di un determinato utente

Usando il flag chown “–from”, puoi cambiare il proprietario di un file, solo se quel file è già di proprietà di un particolare proprietario.

# ls -l tmpfile
-rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile

# chown --from=guest himanshu tmpfile

# ls -l tmpfile
-rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile

# chown --from=root himanshu tmpfile

# ls -l tmpfile
-rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
  • Nell'esempio sopra, abbiamo verificato che il proprietario/gruppo originale del file 'tmpfile' era root/friends.
  • Successivamente abbiamo utilizzato il flag "–from" per cambiare il proprietario in "himanshu", ma solo se il proprietario esistente è "ospite".
  • Ora, poiché il proprietario esistente non era "ospite". Pertanto, il comando non è riuscito a modificare il proprietario del file.
  • Successivamente abbiamo provato a cambiare il proprietario se il proprietario esistente è "root" (che era vero) e questa volta il comando ha avuto successo e il proprietario è stato cambiato in "himanshu".

In una nota correlata, se vuoi modificare i permessi di un file, dovresti usare il comando chmod.

Se sei un principiante, dovresti iniziare leggendo le basi dei permessi dei file.

7. Cambia gruppo solo se un file appartiene già a un determinato gruppo

Anche qui viene utilizzato il flag '–from' ma nel modo seguente:

# ls -l tmpfile
-rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile

# chown --from=:friends :family tmpfile

# ls -l tmpfile
-rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile

Poiché il file "tmpfile" apparteneva effettivamente al gruppo "amici", quindi la condizione era corretta e il comando ha avuto successo.

Quindi vediamo che usando il flag '–from=:' possiamo cambiare il gruppo in una condizione particolare.

NOTA:seguendo il modello '–from=:', è possibile applicare la condizione sia al proprietario che al gruppo.

8. Copia le impostazioni del proprietario/gruppo da un file all'altro

Ciò è possibile utilizzando il flag '–reference'.

# ls -l file
-rwxr-xr-x 1 himanshu family 8968 2012-04-09 07:10 file

# ls -l tmpfile
-rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile

# chown --reference=file tmpfile

# ls -l tmpfile
-rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile

Nell'esempio precedente, abbiamo prima verificato il proprietario/gruppo del file di riferimento "file" e quindi il proprietario/gruppo del file di destinazione "tmpfile". Entrambi erano diversi. Quindi abbiamo utilizzato il comando chown con l'opzione '–reference' per applicare le impostazioni del proprietario/gruppo dal file di riferimento al file di destinazione. Il comando ha avuto successo e le impostazioni del proprietario/gruppo di "tmpfile" sono state rese simili a "file".

9. Cambia il proprietario/gruppo dei file viaggiando ricorsivamente nelle directory

Ciò è reso possibile dall'opzione '-R'.

# ls -l linux/linuxKernel
-rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/linuxKernel

# ls -l linux/ubuntu/ub10
-rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/ubuntu/ub10

# ls -l linux/redhat/rh7
-rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/redhat/rh7

# chown -R himanshu:family linux/

# ls -l linux/redhat/rh7
-rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/redhat/rh7

# ls -l linux/ubuntu/ub10
-rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/ubuntu/ub10

# ls -l linux/linuxKernel
-rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/linuxKernel

Quindi lo vediamo dopo aver controllato il proprietario/gruppo di tutti i file nella directory "linux" e le sue due sottodirectory "ubuntu" e "redhat". Abbiamo emesso il comando chown con l'opzione '-R' per cambiare sia il proprietario che il gruppo. Il comando ha avuto successo e il proprietario/gruppo di tutti i file è stato modificato correttamente.

10. Utilizzo del comando chown su una directory di collegamento simbolico

Vediamo cosa succede se emettiamo il comando 'chown' per cambiare ricorsivamente il proprietario/gruppo di file in una directory che è un collegamento simbolico a qualche altra directory.

Ecco una directory di link simbolici 'linux_symlnk' che si collega alla directory 'linux' (già usata nell'esempio '9' sopra):

$ ls -l linux_symlnk
lrwxrwxrwx 1 himanshu family 6 2012-05-22 22:02 linux_symlnk -> linux/

Ora, cambiamo il proprietario (da himanshu a root) di questa directory di link simbolici in modo ricorsivo:

# chown -R root:friends linux_symlnk

# ls -l linux_symlnk/
-rw-r--r-- 1 himanshu friends    0 2012-05-22 21:52 linuxKernel
drwxr-xr-x 2 himanshu friends 4096 2012-05-22 21:52 redhat
drwxr-xr-x 2 himanshu friends 4096 2012-05-22 21:52 ubuntu

Nell'output sopra vediamo che il proprietario dei file e delle directory non è stato modificato. Questo perché per impostazione predefinita il comando "chown" non può attraversare un collegamento simbolico. Questo è il comportamento predefinito, ma c'è anche un flag '-P' per questo.

11. Utilizzo di chown per modificare in modo ricorsivo il proprietario/gruppo di una directory di collegamento simbolico

Questo può essere ottenuto usando il flag -H

# chown -R -H guest:family linux_symlnk

# ls -l linux_symlnk/
total 8
-rw-r--r-- 1 guest family    0 2012-05-22 21:52 linuxKernel
drwxr-xr-x 2 guest family 4096 2012-05-22 21:52 redhat
drwxr-xr-x 2 guest family 4096 2012-05-22 21:52 ubuntu

Quindi vediamo che usando il flag -H, il proprietario/gruppo di tutti i file/cartelle è stato modificato.

12. Elenca tutte le modifiche apportate dal comando chown

Utilizza l'opzione dettagliata -v, che mostrerà se la proprietà del file è stata modificata o conservata come mostrato di seguito.

# chown -v -R guest:friends linux
changed ownership of `linux/redhat/rh7' to guest:friends
changed ownership of `linux/redhat' retained to guest:friends
ownership of `linux/redhat_sym' retained as guest:friends
ownership of `linux/ubuntu_sym' retained as guest:friends
changed ownership of `linux/linuxKernel' to guest:friends
changed ownership of `linux/ubuntu/ub10' to guest:friends
ownership of `linux/ubuntu' retained as guest:friends
ownership of `linux' retained as guest:friends

Linux
  1. Comando Linux Cat:utilizzo ed esempi

  2. Comandi Linux - Panoramica ed esempi

  3. Come utilizzare il comando chown per modificare la proprietà in Linux

  4. Esempi di comandi chgrp in Linux

  5. Esempi di comandi mkdir e rmdir in Linux

Tutorial sul comando di Linux Chown per principianti (12 esempi)

Comando Chown in Linux (Modifica proprietà file)

Comando Linux Chgrp con esempi

20 esempi pratici di comando Chown in Linux

Opzioni di comando ed esempi di Tee Command in Linux

Esempi di comandi chown di Linux