GNU/Linux >> Znalost Linux >  >> Linux

Výukový program Linux Chown Command pro začátečníky (12 příkladů)

V Linuxu může nastat situace, kdy budete chtít změnit vlastníka a informace týkající se skupiny pro soubor nebo adresář. Pokud jste nováček v příkazovém řádku a chcete vědět, jak můžete provést takové změny prostřednictvím příkazového řádku, budete rádi, když budete vědět, že existuje příkaz – nazvaný chown - to vám umožní.

Než začneme s výukovým programem příkazu chown, stojí za zmínku, že všechny zde uvedené příklady a pokyny byly testovány na Ubuntu 18.04 LTS a Debianu 10.

Vysvětlení příkazu Linux chown

Jak již bylo zmíněno na začátku, příkaz chown vám umožňuje změnit vlastníka souboru a skupinu prostřednictvím příkazového řádku. Následuje obecná syntaxe příkazu:

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

Zde je to, co o nástroji říká manuálová stránka:

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.

Následující příklady typu Q&A vám poskytnou dobrou představu o tom, jak funguje příkaz chown:

O1. Jak změnit vlastníka souboru?

Zvažte následující příklad:

Zde je vlastníkem souboru „himanshu“ a skupina, do které patří, je také „himanshu“. Nyní, chcete-li změnit vlastníka na, řekněte 'root', použijte následující příkaz:

chown root file1

Následující snímek obrazovky potvrzuje, že vlastník byl nyní změněn na 'root'.

Q2. Jak změnit skupinu souboru?

Změna skupiny je podobná změně vlastníka. Jediný rozdíl je v syntaxi příkazu, která je následující:

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

Předpokládejme tedy, že požadavkem je změnit skupinu 'file1' na 'root'. Potom by příkaz byl:

chown :root file1

Následující snímek obrazovky ukazuje, že skupina byla úspěšně změněna z 'himanshu' na 'root'.

Poznámka :V případě, že vás zajímá, proč byl použit příkaz 'sudo', nebo v případě, že jste v 'sudo' nováčkem, měli byste si nejprve projít náš návod k tomuto nástroji.

O3. Jak změnit vlastníka i skupinu souboru?

Chcete-li změnit vlastníka i skupinu souboru, použijte následující syntaxi:

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

V našem případě tedy ke změně stávajícího vlastníka a skupiny z 'root' na 'himanshu' použijeme následující příkaz:

chown himanshu:himanshu file1

Následující snímek obrazovky ukazuje výše uvedený příkaz v akci:

O4. Jak změnit vlastníka nebo skupinu (nebo obojí) po kontrole stávajícího vlastníka/skupiny?

Mohou nastat situace, kdy budete chtít nejprve křížově zkontrolovat stávajícího vlastníka/skupinu souboru před provedením jakékoli změny. Pro tyto případy tedy můžete použít --from možnost příkazového řádku. Tato možnost vyžaduje, abyste uvedli jméno vlastníka/skupiny, kterou chcete ověřit.

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

Například:

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

Výše uvedený příkaz zkontroluje, zda stávající vlastník je 'root' a skupina je 'himanshu'. Pokud ano, pak se vlastník změní na 'himanshu' a skupina se stane 'root'.

O5. Jak vybrat informace o vlastníkovi/skupině z referenčního souboru?

Mohou také nastat situace, kdy můžete chtít, aby chown vyzvedl informace o vlastníkovi a skupině ze souboru, místo abyste je ručně zadávali na příkazový řádek. V těchto případech můžete použít --reference možnost příkazového řádku. Tato možnost vyžaduje zadání názvu referenčního souboru.

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

Například:

chown --reference=file2 file1

Výše uvedený příkaz tedy zkopíruje informace o vlastníkovi a skupině ze souboru2 do souboru1.

O6. Jak zajistit, aby chown fungoval se soubory a adresáři rekurzivně?

Chcete-li, aby příkaz chown fungoval rekurzivně se soubory a adresáři, použijte -R možnost příkazového řádku.

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

Pro ty, kteří si toho nejsou vědomi, rekurzivní znamená, že operace bude provedena pro všechny soubory v daném adresáři, stejně jako pro soubory a adresáře ve všech podadresářích.

O7. Jak přimět chown, aby potlačil chybové zprávy?

Může nastat situace, kdy spuštěný příkaz chown zobrazí chybu. Například následující příkaz při spuštění v mém systému:

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

zobrazila následující chybu:

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

Nyní předpokládejme, že požadavkem je, aby nástroj takové chyby nezobrazoval. Pak to lze provést pomocí -f možnost příkazového řádku.

Výše uvedený snímek obrazovky potvrzuje, že -f možnost příkazového řádku potlačuje chyby/varování.

O8. Jak změnit vlastnictví skupiny na přihlašovací skupinu zadaného uživatele?

To lze provést pomocí [uživatel/vlastník]: syntax. Například následující příkaz:

chown himanshu: file1

Zajistí, aby bylo vlastnictví přiděleno 'himanshu' a skupina se změnila na přihlašovací skupinu 'himanshu'. Všimněte si, že se to liší od případu, kdy se nepoužije dvojtečka (:), protože v tomto případě (vysvětleno v Q1 výše) zůstává skupina nezměněna.

Další věc, která zde stojí za zmínku, je, že pokud použijete pouze dvojtečku (:) bez určení vlastníka nebo skupiny, nedojde k žádné změně. Například:

chown : file1

Tento příkaz nebude mít žádný vliv na vlastnictví souboru uživatelem ani skupinou.

Ve výchozím nastavení, pokud se pokusíte změnit vlastnictví uživatele a skupiny symbolického odkazu, nedojde k žádné změně. Místo toho tyto změny získá soubor, na který odkazuje.

Snímek obrazovky níže například ukazuje, že jsem vytvořil symbolický odkaz „link1“, jehož vlastnictví uživatele a skupiny je nastaveno na „himanshu“. Poté jsem provedl příkaz chown pro změnu uživatele a skupiny na „root“. Příkaz však neměl žádný vliv na soubor symbolického odkazu – místo toho je to „soubor1“ (na který ukazuje symbolický odkaz), jehož vlastnictví uživatelů a skupin se změnilo.

Pokud však chcete, můžete toto výchozí chování přepsat pomocí volby -h.

O10. Jak změnit vlastníka a skupinu pro adresář?

Stejně jako to děláte u souborů. Následuje příklad:

chown root:root ./test-dir/

Mějte na paměti, že změnu vlastníka a skupiny pro adresář můžete křížově ověřit pomocí příkazu stat – pole UID a GID ve výstupu zobrazují jména uživatelů a skupin.

Například v mém případě výstup jasně ukázal změněné vlastnictví skupiny uživatelů.

  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: -

Všimněte si, že pokud provádíte rekurzivní změny (viz Otázky a odpovědi týkající se možnosti -R) a zabýváte se symbolickými odkazy, máte k dispozici následující možnosti:

       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)

O11. Lze UID a GID použít místo názvů uživatelů a skupin?

Ano, místo jmen můžete použít ID uživatele a ID skupiny. Syntaxe příkazu však zůstává stejná.

Například:

chown 1000:1000 file1

Výše uvedený příkaz změní vlastnictví uživatele a skupiny na uživatele s UID 1000 a skupinu s GID 1000.

O12. Jak dosáhnout toho, aby chown zobrazoval podrobnosti operace ve výstupu?

Pokud chcete, aby příkaz chown zobrazil podrobnosti o operaci, kterou provádí, použijte volbu -v příkazového řádku.

Například tento příkaz:

sudo chown himanshu:himanshu link1 -v

vytvoří následující výstup:

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

Nyní je tu další možnost -c, která se také chová jako -v, jen když se nic nezmění, nezobrazuje žádné podrobnosti.

Závěr

Příkaz chown, jak většina z vás pravděpodobně souhlasí, není obtížné použít. Ještě lepší je, že manuálová stránka nástroje obsahuje mnoho podrobností, které mohou být užitečné uživatelům (zejména nováčkům). Vyzkoušejte příklady, které jsme zde vysvětlili, a pro ostatní funkce/možnosti si projděte manuálovou stránku chown. V případě jakýchkoli pochybností nebo dotazů zanechte níže komentář.


Linux
  1. Linux cd command tutorial pro začátečníky (8 příkladů)

  2. Linux Date Command Tutorial pro začátečníky (8 příkladů)

  3. Linux hostname Command Tutorial pro začátečníky (5 příkladů)

  1. Výuka příkazů Linux pro začátečníky (5 příkladů)

  2. Linux df Command Tutorial pro začátečníky (8 příkladů)

  3. Linux du Command Tutorial pro začátečníky (10 příkladů)

  1. Výukový program Linux echo Command pro začátečníky (5 příkladů)

  2. Linux env Command Tutorial pro začátečníky (5 příkladů)

  3. Návod k příkazu velikosti Linuxu pro začátečníky (6 příkladů)