V Linuxu a operačních systémech podobných Unixu jsou všechny soubory, adresáře a procesy (což jsou opět soubory) ve vlastnictví uživatelů. Skupina je sada uživatelů, kteří sdílejí stejná přístupová oprávnění (tj. čtení, zápis a spouštění) pro tyto objekty (soubory/adresáře).
Příkaz chown se v Linuxu používá ke změně uživatelského a skupinového vlastnictví souborů, adresářů a symbolických odkazů.
V tomto tutoriálu vám na několika praktických příkladech ukážu, jak používat příkaz chown.
Syntaxe Chown
Zkontrolujte základní syntaxi příkazu chown následovně:
chown [OPTIONS] USER[:GROUP] FILE/DIRECTORY
Můžete spustit ls -l
příkaz k tisku podrobností o vlastnictví souboru.
V následujícím výstupu můžete vidět, že soubor 'myfile.txt' vlastní uživatel 'tom' a skupina je vlastněna 'vývojáři':
$ ls -l
-rw-r--r-- 1 tom developers 0 Apr 4 01:35 myfile.txt
Změna vlastnictví souboru
Chcete-li změnit vlastnictví souboru, použijte chown se jménem nového vlastníka a názvem souboru, u kterého je třeba vlastníka změnit.
Následující příkaz změní vlastnictví souboru s názvem 'myfile.txt' na nového uživatele 'tom':
# chown tom myfile.txt
Pokud byl příkaz úspěšně proveden, nezobrazí se na terminálu žádný výstup. Nechte ověřit pomocí ls -l
příkaz takto:
# ls -l myfile.txt
-rw-r--r-- 1 tom root 623 Dec 10 2012 myfile.txt
Změna vlastníka a skupiny souboru
Pokud za vlastníkem následuje dvojtečka (:
) a název skupiny (bez mezer), název skupiny se také změní.
Následující příklad ukazuje, jak změnit vlastníka a skupinu pro soubor s názvem 'myfile.txt':
# chown tom:developers myfile.txt
Nyní je novým vlastníkem souboru 'tom' a novým vlastníkem skupiny je skupina 'vývojáři'.
# ls -l myfile.txt
-rw-r--r-- 1 tom developers 424 Dec 10 2012 myfile.txt
Pokud odstraníte název skupiny za dvojtečkou, skupina souboru se změní na zadanou uživatelskou přihlašovací skupinu:
# chown tom: myfile.txt
# ls -l myfile.txt
-rw-r--r-- 1 tom tom 453 Dec 10 2012 myfile.txt
Pokud je uvedena dvojtečka (:) a skupina, změní se pouze skupina souboru. V tomto případě příkaz funguje jako příkaz chgrp.
# chown :developers myfile.txt
# ls -l myfile.txt
-rw-r--r-- 1 tom developers 1579 Dec 10 2012 myfile.txt
Změna vlastnictví adresářů rekurzivně
Chcete-li rekurzivně použít vlastnictví na všechny soubory a adresáře v daném adresáři, použijte -R
možnost
V následujícím příkladu se vlastnictví všech souborů a adresářů pod '/var/www/html' rekurzivně změní na 'linoxide' a vlastnictví skupiny na 'www-data':
# chown linoxide:www-data -R /var/www/html
Podrobný výstup
--verbose
zobrazí všechny změny vlastnictví na terminálu. Vypisuje diagnostiku pro každý zpracovávaný soubor.
Například:
# chown -R --verbose jones /home/jones/
changed ownership of `/home/jones/hello' to jones
changed ownership of `/home/jones/.emacs' to jones
changed ownership of `/home/jones/.bash_history' to jones
changed ownership of `/home/jones/.bash_logout' to jones
changed ownership of `/home/jones/.bashrc' to jones
changed ownership of `/home/jones/file1' to jones
Možnost verbose vypíše zpracování každého souboru, i když nebyly provedeny změny. Ale s -c
nebo --changes
je výstup hlášen pouze při provedení změn.
Změnit vlastnictví symbolických odkazů
Ve výchozím nastavení chown
příkaz nezmění vlastnictví symbolických odkazů, spíše změní vlastnictví cílového souboru. Chmod má volbu -h
které lze použít ke změně vlastnictví symbolických odkazů.
Zkontrolujte následující příklad:
# chown -h tom vmlinuz
# ls -l
total 0
lrwxrwxrwx 1 tom root 31 Apr 5 00:50 vmlinuz -> /boot/vmlinuz-4.15.0-88-generic
Změnit vlastnictví stejně jako referenční soubor
Můžete odkazovat na soubor, ze kterého chown
zkopírujte vlastnictví stejného uživatele a skupiny do nového souboru.
V následujícím příkazu --reference=myfile1.txt
možnost poskytnout referenční soubor a vlastnictví přiřazené k souboru s názvem 'myfile2.txt':
# chown --reference=myfile1.txt myfile2.txt
Tichý provoz
Normální uživatel nemůže změnit vlastnictví souborů vlastněných ostatními. Když se normální uživatel pokusí změnit vlastnictví, zobrazí se chyba.
[tom@node051 ~]$ chown tom /etc/
chown: changing ownership of `/etc/': Operation not permitted
Ale pokud použijeme -f
nebo --silent
nebo --quiet
chyba se nezobrazí.
[tom@node051 ~]$ chown -f tom /etc/
[tom@node051 ~]$
Jak zachovat kořenový adresář
Příkaz Chmod má volbu --preserve-root
aby chmod nepůsobil rekurzivně na /
. Tato volba by měla být použita s -R
možnost vstoupit v platnost.
[root@node051 ~]# chown -c --preserve-root tom /
changed ownership of '/' from root to tom
Pouze oprávnění /
se změní a vlastnictví souborů a adresářů uvnitř /
zůstane stejný.
[root@node051 ~]# ls -ld /
drwxr-xr-x 23 tom root 4096 Feb 19 14:36 /
[root@node051 ~]# ls -l
total 88
drwxr-xr-x 2 root root 4096 Feb 19 14:33 bin
drwxr-xr-x 3 root root 4096 Feb 19 14:36 boot
drwxr-xr-x 16 root root 3660 Mar 28 11:09 dev
drwxr-xr-x 90 root root 4096 Apr 4 02:28 etc
drwxr-xr-x 2 root root 4096 Feb 19 14:35 home
lrwxrwxrwx 1 root root 33 Feb 19 14:35 initrd.img -> boot/initrd.img-4.15.0-88-generic
lrwxrwxrwx 1 root root 33 Feb 19 14:29 initrd.img.old -> boot/initrd.img-4.15.0-76-generic
drwxr-xr-x 22 root root 4096 Feb 19 14:37 lib
drwxr-xr-x 2 root root 4096 Feb 19 14:28 lib64
drwx------ 2 root root 16384 Feb 19 14:27 lost+found
Závěr
V tomto tutoriálu jsme se naučili, jak změnit vlastnictví souborů a adresářů v Linuxu. Děkujeme za přečtení a dejte nám vědět své komentáře.