GNU/Linux >> Znalost Linux >  >> Linux

12 Příklady příkazů Linux Chown pro změnu vlastníka a skupiny

Koncept vlastníka a skupin souborů je pro Linux zásadní. Každý soubor je spojen s vlastníkem a skupinou. Ke změně vlastníka nebo skupiny konkrétního souboru nebo adresáře můžete použít příkazy chown a chgrp.

V tomto článku probereme příkaz 'chown', protože pokrývá většinu části 'chgrp ' příkaz také.

I když tento příkaz již znáte, pravděpodobně pro vás bude jeden z níže uvedených příkladů nový.

1. Změnit vlastníka souboru

# 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

Vidíme tedy, že vlastník souboru byl změněn z ‚himanshu‘ na ‚root‘.

2. Změňte skupinu souboru

Pomocí příkazu chown lze také změnit skupinu (do které soubor patří).

# 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

Pokud pozorně sledujete, skupina souboru se změnila z „rodina“ na „přátelé“. Vidíme tedy, že pouhým přidáním znaku „:“ následovaného novým názvem skupiny lze skupinu souboru změnit.

3. Změňte vlastníka i skupinu

# 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

Vidíme tedy, že pomocí syntaxe ‚: ‘ lze vlastníka i skupinu změnit najednou.

4. Použití příkazu chown na soubor symbolického odkazu

Zde je symbolický odkaz:

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

Vidíme tedy, že symbolický odkaz „tmpfile_symlink“ odkazuje na soubor „tmpfile“.

Podívejme se, co se stane, když je na symbolickém odkazu vydán příkaz chown:

# 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

Když byl příkaz chown vydán na symbolickém odkazu ke změně vlastníka i skupiny, pak je to referent symbolického odkazu, tj. „tmpfile“, jehož vlastník a skupina se změnili. Toto je výchozí chování příkazu chown. Pro totéž existuje příznak „–dereference“.

5. Použití příkazu chown k násilné změně vlastníka/skupiny symbolického souboru.

Pomocí příznaku „-h“ můžete násilně změnit vlastníka nebo skupinu symbolického odkazu, jak je znázorněno níže.

# 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. Změnit vlastníka pouze v případě, že soubor vlastní konkrétní uživatel

Pomocí příznaku chown „–from“ můžete změnit vlastníka souboru, pouze pokud tento soubor již vlastní konkrétní vlastník.

# 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
  • Ve výše uvedeném příkladu jsme ověřili, že původní vlastník/skupina souboru „tmpfile“ byl root/friends.
  • Dále jsme použili příznak „–from“ ke změně vlastníka na „himanshu“, ale pouze v případě, že stávající vlastník je „host“.
  • Nyní, protože stávající vlastník nebyl „hostem“. Příkazu se tedy nepodařilo změnit vlastníka souboru.
  • Dále jsme se pokusili změnit vlastníka, pokud je stávající vlastník ‚root‘ (což byla pravda) a tentokrát byl příkaz úspěšný a vlastník byl změněn na ‚himanshu‘.

V související poznámce, pokud chcete změnit oprávnění souboru, měli byste použít příkaz chmod.

Pokud jste začátečník, měli byste začít tím, že si přečtete základy oprávnění k souborům.

7. Změňte skupinu pouze v případě, že soubor již patří do určité skupiny

Zde je také použit příznak „–from“, ale následujícím způsobem:

# 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

Protože soubor „tmpfile“ ve skutečnosti patřil do skupiny „přátelé“, podmínka byla správná a příkaz byl úspěšný.

Vidíme tedy, že pomocí příznaku ‚–from=:‘ můžeme změnit skupinu za konkrétní podmínky.

POZNÁMKA:Podle šablony ‚–from=:‘ lze použít podmínku vlastníka i skupiny.

8. Zkopírujte nastavení vlastníka/skupiny z jednoho souboru do druhého

To je možné pomocí příznaku „–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

Ve výše uvedeném příkladu jsme nejprve zkontrolovali vlastníka/skupinu „souboru“ referenčního souboru a poté vlastníka/skupinu cílového souboru „tmpfile“. Oba byli jiní. Poté jsme použili příkaz chown s možností ‚–reference‘ k použití nastavení vlastníka/skupiny z referenčního souboru na cílový soubor. Příkaz byl úspěšný a nastavení vlastníka/skupiny „tmpfile“ bylo provedeno podobně jako u „souboru“.

9. Změňte vlastníka/skupinu souborů rekurzivním cestováním po adresářích

To je možné díky možnosti „-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

Vidíme to tedy po kontrole vlastníka/skupiny všech souborů v adresáři ‚linux‘ a jeho dvou podadresářích ‚ubuntu‘ a ‚redhat‘. Vydali jsme příkaz chown s možností „-R“, abychom změnili vlastníka i skupinu. Příkaz byl úspěšný a vlastník/skupina všech souborů byla úspěšně změněna.

10. Použití příkazu chown v adresáři se symbolickým odkazem

Podívejme se, co se stane, když zadáme příkaz „chown“ k rekurzivní změně vlastníka/skupiny souborů v adresáři, který je symbolickým odkazem na nějaký jiný adresář.

Zde je symbolický odkazový adresář ‚linux_symlnk‘, který odkazuje na adresář ‚linux‘ (již použitý v příkladu ‚9‘ výše):

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

Nyní změňme vlastníka (z himanshu na root) tohoto adresáře symbolických odkazů rekurzivně:

# 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

Ve výstupu výše vidíme, že vlastník souborů a adresářů nebyl změněn. Příkaz „chown“ totiž ve výchozím nastavení nemůže procházet symbolickým odkazem. Toto je výchozí chování, ale je zde také příznak ‚-P‘.

11. Použití chown k násilné změně vlastníka/skupiny adresáře se symbolickým odkazem rekurzivně

Toho lze dosáhnout použitím příznaku -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

Vidíme tedy, že použitím parametru -H došlo ke změně vlastníka/skupiny všech souborů/složek.

12. Vypište všechny změny provedené příkazem chown

Použijte podrobnou možnost -v, která zobrazí, zda bylo vlastnictví souboru změněno nebo zachováno, jak je uvedeno níže.

# 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. 5 Praktické příklady příkazu chgrp v Linuxu

  2. Příklady příkazů chown v Linuxu

  3. groupmems Příklady příkazů v Linuxu

  1. Linux Cat Command:Použití a příklady

  2. Linuxové příkazy – přehled a příklady

  3. Příklady příkazů chgrp v Linuxu

  1. Příklady příkazů mkdir a rmdir v Linuxu

  2. Příklady příkazů swapon a swapoff v Linuxu

  3. Změnit vlastníka a skupinu v C?