chown

Zmienia właściciela i grupę plików oraz katalogów.

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 ... /etcrekurencja 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).