chown (od change owner) to linuksowe polecenie, które zmienia właściciela i grupę plików oraz katalogów. W systemach uniksowych każdy plik ma przypisanego użytkownika-właściciela i grupę — to one decydują, kto może czytać, pisać i wykonywać. Gdy skopiujesz katalog jako root, rozpakujesz archiwum albo przeniesiesz pliki z innego serwera, prawa własności potrafią się rozjechać i nagle aplikacja nie ma dostępu do swoich własnych plików. Wtedy sięgasz po chown. Wymaga uprawnień roota (lub sudo), bo zwykły użytkownik nie może oddać pliku komuś innemu.
Składnia i najważniejsze opcje
Podstawowy format wygląda tak: chown [OPCJE] WŁAŚCICIEL[:GRUPA] PLIK.... Sam dwukropek bez nazwy grupy (:grupa) zmienia tylko grupę, a user: ustawia grupę na domyślną grupę tego użytkownika.
-R,--recursive— działa rekurencyjnie na katalogu i całej jego zawartości.-v,--verbose— wypisuje informację o każdym przetwarzanym pliku.-c,--changes— jak-v, ale raportuje tylko faktycznie zmienione pliki.-h,--no-dereference— zmienia właściciela samego dowiązania symbolicznego, a nie pliku, na który ono wskazuje.--from=AKTUALNY[:GRUPA]— zmienia własność tylko wtedy, gdy plik ma obecnie wskazanego właściciela/grupę.--reference=WZORZEC— ustawia właściciela i grupę takie same jak dla pliku WZORZEC.--preserve-root— chroni przed rekurencyjnym działaniem na/.
Przykłady użycia
chown anna plik.txt— ustawia użytkownika anna jako właściciela pliku.chown anna:devs raport.csv— zmienia właściciela na anna i grupę na devs jednocześnie.sudo chown -R www-data:www-data /var/www/strona— klasyka: oddaje cały katalog WWW serwerowi (np. dla Nginx/Apache).chown :backup archiwum.tar— zmienia tylko grupę na backup, właściciel zostaje bez zmian.chown --reference=wzor.conf nowy.conf— kopiuje właściciela i grupę z pliku wzor.conf na nowy.conf.
Częste błędy i pułapki
Najczęstszy strzał w stopę to chown -R user:user / albo chown -R ... /etc — rekurencja po katalogach systemowych potrafi rozłożyć system na łopatki. Dlatego trzymaj się konkretnych ścieżek i traktuj -R z respektem. Pamiętaj też, że na macOS i BSD chown pochodzi z innej rodziny niż GNU coreutils z Linuksa — długie opcje typu --reference czy --from tam nie istnieją, a separatorem grupy bywa kropka. Na Linuksie kropka też zadziała (np. anna.devs), ale to przestarzała składnia — używaj dwukropka. Uważaj na dowiązania symboliczne: domyślnie chown zmienia własność pliku docelowego, więc gdy chcesz tknąć sam symlink, dodaj -h.
Powiązane komendy: chmod (uprawnienia odczytu/zapisu/wykonania), chgrp (zmiana tylko grupy), ls -l (podgląd właściciela i grupy), stat (szczegóły pliku) oraz sudo (potrzebne przy zmianie cudzych plików).