1. Co to jest chown i po co go używać?
W systemach Linux każdy plik i katalog ma:
- 1. Co to jest chown i po co go używać?
- 2. Podstawowa składnia polecenia chown
- 3. Zmiana właściciela – najprostsze przykłady
- 4. Zmiana grupy za pomocą chown
- 5. Jednoczesna zmiana właściciela i grupy
- 6. Zmiana właściciela rekurencyjnie – katalog i wszystko w środku
- 7. Przydatne opcje chown
- 8. Jak sprawdzić aktualnego właściciela i grupę?
- 9. Rola sudo i uprawnień przy chown
- 10. Przykłady praktyczne – webhosting, serwery WWW
- 11. Typowe błędy i jak ich uniknąć
- 12. Dokumentacja i pomoc z poziomu systemu
- 13. Chown a poziom systemowy (dla ciekawych)
- 14. Szybka ściągawka – najważniejsze wzorce użycia
- właściciela (użytkownika),
- grupę,
- zestaw uprawnień (odczyt, zapis, wykonanie).
Polecenie chown służy do zmiany właściciela oraz – opcjonalnie – grupy dla plików i katalogów.
Oto typowe zastosowania w codziennej pracy admina i developera:
- przeniesienie plików między użytkownikami (np. z
rootdo zwykłego użytkownika), - naprawa uprawnień po kopiowaniu lub przenoszeniu danych,
- ustawienie właściciela plików serwera WWW (np. Apache, Nginx),
- konfiguracja uprawnień dla usług (bazy danych, demony, aplikacje webowe).
2. Podstawowa składnia polecenia chown
Standardowa składnia wygląda następująco:
chown [OPCJE] WŁAŚCICIEL[:GRUPA] PLIK...
Najważniejsze elementy składni to:
WŁAŚCICIEL– nazwa użytkownika (np.jan,www-data);GRUPA– nazwa grupy (np.users,www-data);PLIK– plik lub katalog (ścieżka względna lub absolutna).
Przykład użycia z uprawnieniami administratora:
sudo chown WŁAŚCICIEL[:GRUPA] PLIK
3. Zmiana właściciela – najprostsze przykłady
3.1. Zmiana właściciela pliku
Polecenie:
sudo chown jan dokument.txt
Ten przykład ustawia użytkownika jan jako właściciela pliku dokument.txt. Grupa pozostaje bez zmian.
3.2. Zmiana właściciela katalogu
Polecenie:
sudo chown jan /var/www
Zmienia właściciela katalogu /var/www, ale nie modyfikuje plików w środku (bez opcji rekurencji).
4. Zmiana grupy za pomocą chown
chown może zmienić także samą grupę, bez zmiany właściciela.
4.1. Zmiana tylko grupy
Składnia i przykład:
sudo chown :www-data /var/www/index.html
To polecenie ustawia grupę www-data dla pliku index.html; właściciel pozostaje bez zmian.
5. Jednoczesna zmiana właściciela i grupy
Najczęściej używana forma wygląda tak:
sudo chown WŁAŚCICIEL:GRUPA PLIK
Praktyczny przykład:
sudo chown jan:www /home/jan/projekt.html
Plik projekt.html będzie należał do użytkownika jan i grupy www.
Warianty zapisu i ich działanie:
WŁAŚCICIEL:GRUPA– jednoczesna zmiana właściciela i grupy;WŁAŚCICIEL:– zmiana właściciela i ustawienie grupy na domyślną grupę użytkownika (zależnie od systemu);:GRUPA– zmiana tylko grupy.
6. Zmiana właściciela rekurencyjnie – katalog i wszystko w środku
Aby zmienić właściciela/grupę dla katalogu i wszystkich podkatalogów oraz plików, użyj opcji -R (rekurencyjnie).
6.1. Przykład rekurencyjnej zmiany
Polecenie:
sudo chown -R jan:www /var/www
To polecenie ustawia właściciela jan i grupę www dla katalogu /var/www.
Zmiana obejmuje również wszystkie pliki i podkatalogi w jego wnętrzu (/var/www/*).
W kontekście hostingu WWW może to wyglądać tak:
chown -R serwer:user /home/serwer/public_html
6.2. Uwaga na rekurencję
Opcja -R potrafi zmienić setki tysięcy plików – błąd w ścieżce może zniszczyć uprawnienia dużej części systemu.
Zawsze upewnij się, że wskazujesz właściwy katalog (np. /home/jan/projekt, a nie /home/jan).
Bezpieczna praktyka: wejść poziom wyżej i użyć ścieżki względnej:
cd /home
sudo chown -R bob:bob bob
7. Przydatne opcje chown
Poza -R warto znać kilka opcji, które często przydają się w administracji.
7.1. -R – rekurencyjna zmiana
Jak wyżej: obejmuje katalog i całe jego drzewo.
7.2. -h – nie podążaj za dowiązaniami symbolicznymi
Przydatne przy rekurencji, aby nie zmieniać własności plików, na które wskazują symlinki.
Przykład:
sudo chown -hR jan:www /srv/www
Zmienia właściciela i grupę katalogu oraz zawartości, ale nie podąża za dowiązaniami symbolicznymi.
7.3. --from=STARY – zmiana tylko gdy właściciel/grupa pasują
Opcja pozwala zmienić właściciela/grupę tylko jeśli plik ma obecnie wskazanego właściciela lub grupę.
Przykład zmiany właściciela z guest na pawel tylko wtedy, gdy plik należy do guest:
chown --from=guest pawel plik1
Przykład zmiany grupy z friends na family tylko wtedy, gdy plik jest w grupie friends:
chown --from=:friends :family plik1
To bardzo przydatne w skryptach, gdy nie chcesz nadpisywać ręcznie poprawionych własności.
7.4. --reference=PLIK – skopiuj właściciela i grupę z innego pliku
Zamiast podawać użytkownika i grupę ręcznie, użyj pliku referencyjnego:
chown --reference=plik1 plik2
Własność (właściciel + grupa) pliku plik1 zostanie skopiowana do plik2. Przydaje się, gdy chcesz zachować identyczne własności jak w pliku wzorcowym.
8. Jak sprawdzić aktualnego właściciela i grupę?
Najprościej użyć listowania długiego:
ls -l plik.txt
Przykładowy wynik polecenia:
-rw-r--r-- 1 jan www 1024 cze 1 12:00 plik.txt
Wynik oznacza, że właścicielem jest jan, a grupa to www.
Po wykonaniu chown sprawdź wynik poleceniem ls -l, aby potwierdzić, że zmiana się powiodła.
9. Rola sudo i uprawnień przy chown
Zmiana właściciela jest operacją zarezerwowaną dla superużytkownika (root).
Zwykły użytkownik może czasem zmienić grupę na taką, do której należy (zależnie od konfiguracji), ale co do zasady nie może zmienić właściciela na innego użytkownika.
Aby zmienić właściciela na innego użytkownika (np. z root na jan), użyj polecenia z uprawnieniami administratora:
sudo chown jan plik.txt
Na serwerach VPS/hostingowych sudo bywa dostępne, a użytkownik zwykle może modyfikować własność plików w obrębie swojego katalogu domowego lub konta serwerowego.
10. Przykłady praktyczne – webhosting, serwery WWW
Poniżej kilka typowych scenariuszy z serwerów WWW.
10.1. Ustawienie właściciela plików strony WWW
Załóżmy następującą konfigurację:
- użytkownik systemowy:
serwer, - grupa:
users, - katalog z plikami strony:
/home/serwer/public_html.
Polecenia do wykonania:
chown serwer:users /home/serwer/public_html/index.html
chown -R serwer:users /home/serwer/public_html
W pierwszym przypadku zmieniasz własność jednego pliku, w drugim – całej zawartości katalogu.
10.2. Naprawa uprawnień po kopii wykonanej jako root
Typowy błąd: kopia strony wykonana jako root, przez co pliki należą do root, a nie do użytkownika hostingu. Naprawisz to tak:
cd /home/serwer
sudo chown -R serwer:users public_html
Po tym kroku pliki znów należą do konta używanego przez serwer WWW.
11. Typowe błędy i jak ich uniknąć
11.1. chown na złej ścieżce
Przykład katastrofalnego błędu (rekurencja od katalogu głównego):
sudo chown -R jan:jan /
To może całkowicie zniszczyć uprawnienia systemu, włącznie z plikami systemowymi.
Jak się zabezpieczyć:
- zawsze sprawdzaj ścieżkę przed wciśnięciem Enter,
- użyj najpierw
ls, aby potwierdzić zakres działania, - często bezpieczniej jest wejść poziom wyżej i użyć ścieżki względnej.
Przykład bezpieczniejszego podejścia:
cd /home
sudo chown -R bob:bob bob
11.2. Mieszanie chown i chmod
chown zmienia właściciela i/lub grupę pliku lub katalogu.
chmod zmienia uprawnienia (rwx) dla właściciela, grupy i innych.
Do kompletnej konfiguracji dostępu często używa się obu poleceń – najpierw chown, potem chmod.
12. Dokumentacja i pomoc z poziomu systemu
Skrócona pomoc dostępna jest pod poleceniem:
chown --help
Pełny podręcznik (manpage) znajdziesz tutaj:
man chown
W dokumentacji opisano m.in. opcje -H, -L, -P wpływające na zachowanie przy dowiązaniach i rekurencji.
13. Chown a poziom systemowy (dla ciekawych)
Na poziomie programistycznym zmiana właściciela realizowana jest przez funkcję systemową chown():
int chown (const char * filename, uid_t user, gid_t group);
Funkcja modyfikuje pola uid i gid w i-węźle (inode) przypisanym do pliku. Dla użytkownika powłoki kluczowe pozostaje jednak polecenie chown w terminalu.
14. Szybka ściągawka – najważniejsze wzorce użycia
Poniższa tabela zbiera najczęściej stosowane wzorce wraz z poleceniami:
| Zadanie | Polecenie |
|---|---|
| Zmiana właściciela pliku | sudo chown jan plik.txt |
| Zmiana grupy | sudo chown :www plik.txt |
| Zmiana właściciela i grupy | sudo chown jan:www plik.txt |
| Rekurencyjna zmiana dla katalogu | sudo chown -R jan:www /var/www |
| Zmiana tylko jeśli obecny właściciel to guest | chown --from=guest jan plik.txt |
| Skopiowanie właściciela i grupy z innego pliku | chown --reference=plik_wzor.txt plik_cel.txt |








