Czym jest chmod, do czego służy i jak je ustawić? Odgrywa ważną rolę w kwestii prawa odczytu plików i katalogów, a także możliwości wykonywania ich przez użytkowników.
Spis treściWiększość właścicieli stron internetowych zapewne kiedyś słyszała już o takim pojęciu, jak chmod. Jest ściśle związane z ochroną plików i katalogów znajdujących się na serwerach, choć nie tylko. Nie należy do najłatwiejszych w użyciu, ze względu na skomplikowaną strukturę. W tym artykule znajdziesz jednak wszystkie informacje na jego temat, opisane w przystępnej formie. Skupiłem się zarówno na teorii, jak i praktycznym wykorzystaniu tego polecenia, wraz z jego szczegółowymi instrukcjami i przykładami. To pomoże Ci wykorzystać go w pełni do swoich potrzeb.
Co to jest chmod?
Chmod to skrót od angielskiego wyrażenia „change mode”, czyli „zmiana atrybutu”. Jest to polecenie umożliwiające zmianę uprawnień do plików i katalogów w systemach Linux/Unix. Z jego pomocą jesteś w stanie określić następujące prawa do:
- odczytu,
- zapisu,
- wykonywania.
Rozwiązanie to służy przede wszystkim do ochrony prywatności poszczególnych katalogów oraz plików znajdujących się na serwerze. To świetny sposób na ograniczenie dostępu do Twoich materiałów przez pozostałych użytkowników. Ponadto możesz w ten sposób sprawić, że tylko właściciel serwera czy strony zyska dostęp do plików konfiguracyjnych. To dodatkowe zabezpieczenie na wypadek sytuacji kryzysowych, jak np. ataki czy nieupoważnione przejęcia.
Jako właściciel katalogu albo pliku możesz wykorzystać chmod nie tylko do ich ochrony. Rozwiązanie to sprawdzi się również do zarządzania skryptami. W ten sposób np. ustawisz pliki jako wykonywalne. Jeśli bowiem nie nadasz im wystarczających uprawnień, to serwer nie będzie w stanie ich poprawnie wyświetlać. Z drugiej strony zbyt „rozległe” uprawnienia mogą prowadzić do występowania potencjalnych zagrożeń.
Struktura Chmod
Polecenie chmod składa się z czterech głównych elementów: polecenia, opcji (nieobowiązkowe), uprawnień i ścieżki. Dodatkowo dla wspomnianych uprawnień istotne są klasy użytkowników oraz zapis ich samych. Zapis zawiera więc kolejno:
chmod [opcje] uprawnienia plik/katalog
Znaczenie poszczególnych elementów i ich charakterystykę opisałem poniżej.
1. Nazwa polecenia
Jest to po prostu polecenie chmod
, które każdorazowo umieszczane jest na początku wprowadzanego polecenia. Wskazuje akcję, którą zamierzasz wykonać.
2. Opcje (nieobowiązkowe)
Opcje służą do ewentualnego modyfikowania działania polecenia chmod
. Nie są obowiązkowe, ale możesz ich używać, by zwiększać efektywność podejmowanych działań. Wśród najczęściej stosowanych opcji wymienić można np.:
-c, --changes |
informuje o zmienionych plikach |
-v |
wyświetla szczegółowe informacje o zmianach |
-R |
zmienia uprawnienia rekurencyjne |
--version |
wyświetla informacje o wersji i zakończenie |
-f, --silent, --quiet |
wyłączenie większości komunikatów (np. o błędach) |
--reference=plik |
kopiuje uprawnienia z innego pliku |
Opcje są umieszczane bezpośrednio za poleceniem.
3. Opisy klas użytkowników i uprawnienia
Najistotniejsza część, definiująca prawa dostępu do pliku, katalogu i jego podkatalogów dla konkretnych użytkowników. Niezbędne jest do tego określenie:
- klasy użytkowników,
- zapisu uprawnień.
Obie te wartości mogą przyjmować zarówno formę literową, jak i cyfrową.
Klasy użytkowników
Polecenie Chmod przybiera formę opisu pliku przy użyciu 3 lub 4 cyfr. W tym drugim przypadku skupimy się głównie na trzech ostatnich, np. x600. Oznaczają one kolejno:
- x – bit specjalny;
- 6 (pierwsza cyfra) – uprawnienia dla użytkownika;
- 0 (druga cyfra) – uprawnienia dla grupy;
- 0 (trzecia cyfra) – uprawnienia dla pozostałych (np. serwera).
Te klasy są również opisywane za pomocą liter:
- u – uprawnienia dla użytkownika (ang. user);
- g – uprawnienia dla grupy (ang. group);
- o – uprawnienia dla pozostałych (ang. others);
- a – uprawnienia dla wszystkich (ang. all).
Sposób zapisu uprawnień
Sposobów zapisu praw do danego pliku jest kilka. Najczęściej stosuje się natomiast numeryczny (oktalny) oraz literowy (symboliczny). Te pierwsze przyjmują odpowiednie wartości potęgi dwójki dla każdego rodzaju akcji.
Zapis | Prawo odczytu | Prawo zapisu | Prawo uruchomienia |
---|---|---|---|
System cyfrowy | 4 | 2 | 1 |
System literowy | r (ang. read) | w (ang. write) | x (ang. execute) |
Następnie uprawnienia należy odpowiednio zapisać w odniesieniu do klas użytkowników. Każde uprawnienie ma swoją wartość liczbową. Ich zsumowanie określa pełne uprawnienia dla każdej z kategorii użytkowników. W praktyce więc każdy użytkownik (właściciel, grupa, inni) ma trzy możliwe uprawnienia (r, w, x). Wynika z tego, że ich maksymalna suma to 7 (4+2+1).
W systemie metrycznym liczby odpowiadające uprawnieniom są dodawane dla odpowiednich użytkowników. Postępuje się tak kolejno dla właściciela, grupy i innych.
W systemie znakowym zamiast liczenia i wpisywania cyfr stosowane są po prostu znaki (u, g, o, a). Oddzielane są z kolei znakami:
- + pozwala dodawać uprawnienia,
- – pozwala odbierać uprawnienia,
- = pozwala zmieniać uprawnienia.
Interpretację tych sposobów zapisu kodów można przedstawić w postaci tabeli:
Prawo | Cyfra | Litera | Binarnie |
---|---|---|---|
Brak praw | 0 | — | 000 |
Wykonywanie | 1 | –x | 001 |
Zapis | 2 | -w- | 010 |
Zapis i wykonanie | 3 | -wx | 011 |
Odczyt | 4 | r– | 100 |
Odczyt i wykonanie | 5 | r-x | 101 |
Odczyt i zapis | 6 | rw- | 110 |
Odczyt, zapis i wykonanie | 7 | rwx | 111 |
4. Ścieżka do pliku lub katalogu
Ostatnim elementem jest ścieżka prowadząca do pliku czy katalogu, którego dotyczy polecenie zmiany uprawnień. Może przyjmować trzy różne formy, takie jak:
- dokładna nazwa pliku w bieżącym katalogu (np. plik.txt),
- ścieżka względna (np. /nazwa_folderu/plik.txt),
- ścieżka absolutna (np. /home/user/nazwa_folderu/plik.txt).
Zobacz też: Struktura katalogów na serwerze: public_html i inne
Prawa dostępu – przykłady użycia
Skoro już wiesz, w jaki sposób budowane są polecenia chmod, czas przyjrzeć się ich strukturze w praktyce. W poniższej tabeli przedstawiłem najczęściej wykorzystywane przykłady uprawnień, uwzględniając zarówno ich wartość liczbową, jak i prawa dostępu.
Wartość liczbowa | Prawa dostępu | Znaczenie |
---|---|---|
600 | -rw——- | wyłącznie właściciel ma prawo do odczytu i zapisu |
644 | -rw-r–r– | Prawo do zapisu i odczytu ma właściciel, a reszta tylko prawo do odczytu |
666 | -rw-rw-rw- | Prawa do odczytu i zapisu mają wszyscy |
700 | -rwx—— | Pełne prawa przysługują właścicielowi (do odczytu, zapisu i uruchomienia) |
755 | -rwxr-xr-x | Pełne prawa do pliku ma właściciel, a reszta tylko prawo uruchomienia i odczytu |
777 | -rwxrwxrwx | Wszyscy mają pełne prawa do pliku |
744 | drwxr–r– | właściciel ma pełne prawo do katalogu, reszta tylko do odczytu |
4755 | -rwxr-xr-x | Właściciel ma pełne prawo do pliku. Grupa ma prawo do odczytu i wykonywania. Reszta ma prawo do odczytu i uruchamiania. Pierwsza cyfra (4) to atrybut SUID. Oznacza on, że wykonywalny plik może wywołać proces i oddać mukontrolę nad wykonaniem zadania. |
Jak wykorzystać powyższe zapisy w praktyce i „wpisać” je w polecenie? Poniżej znajdziesz kompletne kody służące do wykonywania różnego rodzaju poleceń:
- wszyscy mogą zmieniać zawartość wskazanego katalogu oraz jego podkatalogów, a także go czytać oraz wykonywać zawarte w nim pliki:
$ chmod -R 777 /home/user
- wszyscy otrzymują uprawnienia zmiany wskazanego pliku:
$ chmod a+w plik.txt
- nikt nie może zapisywać do katalogu:
chmod a-w katalog
- właściciel ma pełne prawo do pliku, grupa ma prawo do odczytu i wykonywania, a reszta ma prawo do odczytu i uruchamiania wszystkich katalogów i plików we wskazanej ścieżce:
chmod -R 755 /var/www/html
- ustawia prawo odczytu dla wszystkich użytkowników we wskazanej lokalizacji:
chmod -R a+r public_html
- właściciel ma pełne prawa, grupa odczyt i wykonanie, a inni nie mają dostępu do wskazanego folderu:
chmod u+rwx,g+rx,o-rw sekretny_folder
Jak zmienić Chmod bezpośrednio z linii poleceń?
Chmod możesz zmienić bez potrzeby instalowania specjalnych programów. Wykorzystaj do tego terminal w systemach Linux i macOS lub WSL czy SSH na Windowsie. Wystarczy tylko, że:
- uruchomisz terminal,
- wprowadzisz odpowiedni kod z poleceniem chmod,
- sprawdzić skuteczność wprowadzonych uprawnień.
Czytaj: Co to jest SSH w hostingu? Jak i do czego używać linii poleceń?
Chmod dla wielu plików jednocześnie
Jeśli nie chcesz wprowadzać zmian dla poszczególnych elementów, możesz zrobić to od razu dla wielu z nich. Aby np. nadać uprawnienia rw-r–r– wszystkim plikom .txt użyj kodu:
chmod 644 *.txt
Chcąc z kolei dodać prawo wykonania (+x) wszystkim skryptom .sh, skorzystaj z zapisu:
chmod u+x *.sh
Sprawdzanie wprowadzonych zmian
Najłatwiejszym sposobem na sprawdzenie uprawnień jest skorzystanie z polecenia:
ls -l nazwa_pliku
Dzięki temu błyskawicznie przekonasz się, czy wprowadzone zmiany przyniosły oczekiwany efekt. Przykład:
- wprowadzasz komendę:
chmod 644 dokument.txt
ls -l dokument.txt
- otrzymujesz odpowiedź:
-rw-r--r-- 1 user user 1234 Feb 26 12:00 dokument.txt
Oznacza to, że właściciel ma prawa do odczytu i zapisu (rw-), a grupa oraz inni użytkownicy tylko do odczytu (r–).
W taki sposób możesz sprawdzić również uprawnienia np. wszystkich plików w katalogu:
ls -l
Możesz też sprawdzić uprawnienia wszystkich plików oraz katalogów w bieżącym katalogu:
ls -l /ścieżka/do/katalogu
Jak ustawić chmod przez klienta FTP/SFTP?
W przypadku zmiany chmod w kliencie FTP lub SFTP konieczne jest wyszukanie odpowiedniego pliku lub folderu z poziomu oprogramowania (np. FileZilla). Następnie wystarczy wybrać odpowiednią opcję i wprowadzić lub zaznaczyć pożądaną konfigurację.
FileZilla to darmowe rozwiązanie, które z powodzeniem zainstalujesz zarówno na urządzeniach z systemem Windows, jak i Linux czy macOS. Aby zmienić w nim uprawnienia chmod, postępuj zgodnie z poniższymi krokami:
- zainstaluj klienta FTP/SFTP na swoim komputerze;
- połącz się z jego poziomu ze swoim serwerem;
- znajdź katalog, którego uprawnienia chcesz zmienić;
- naciśnij na dany katalog lub plik prawym przyciskiem myszy;
- wybierz opcję „Prawa pliku” lub podobną;
- uzupełnij puste pole, które pojawi się na ekranie. Możesz w nim:
- wpisać wartość numeryczną,
- zaznaczyć odpowiednie pola dla odczytu, zapisu i wykonywania dla właściciela, grupy i innych użytkowników;
- zatwierdź zmiany, naciskając przycisk „OK”.
Cały proces przebiega bardzo podobnie również w przypadku innych standardowych klientów, jak np. Cyberduck czy TotalCommander. Przykłady polecanych programów FTP/SFTP znajdziesz w moim artykule: Programy FTP/SFTP – darmowe i płatne. Windows, macOS, Linux.
Jak zmienić Chmod w Eksploratorze plików Windows?
W Windowsie możesz zmienić uprawnienia plików i folderów przy użyciu menedżera plików. Proces ten nie jest skomplikowany, bo wystarczy tylko, że:
- uruchomisz Eksploratora plików;
- znajdziesz interesujący Cię katalog lub plik;
- zaznaczysz pozycję i naciśniesz prawy przycisk myszy, wybierając „Właściwości„;
- przejdziesz do zakładki „Zabezpieczenia„;
- w sekcji „Nazwy grup lub użytkowników” wybierzesz użytkownika, dla którego chcesz zmienić uprawnienia;
- naciśniesz przycisk „Edytuj„;
- zaznaczysz lub odznaczysz odpowiednie opcje, np.:
- odczyt (r),
- modyfikacja (rw-),
- pełna kontrola (rwx),
- wykonanie (x);
- zatwierdź zmiany, naciskając „OK” i zamknij okno.
Jak zmienić Chmod w panelu hostingowym?
Jeśli korzystasz z hostingu współdzielonego, to możesz zmienić uprawnienia plików i folderów z poziomu panelu hostingowego. Wystarczy tylko, że zalogujesz się do swojego konta i przejdziesz do Menedżera plików. Po znalezieniu odpowiednich plików lub folderów edytuj ich uprawnienia.
Pozwalają na to praktycznie wszyscy hostingodawcy. To wygodna metoda, bo nie potrzebujesz do niej pobierać żadnych programów czy wprowadzać kodów. Cały proces może wyglądać różnie, w zależności od konkretnego systemu.
Zmiana Chmod w DirectAdmin
Aby wprowadzić zmiany w DirectAdmin, postępuj zgodnie z poniższymi krokami:
- zaloguj się do DirectAdmin;
- wybierz z menu zakładkę „Użytkownik„;
- przejdź do „Informacje o systemie i Pliki;
- uruchom Menedżera Plików;
- wybierz plik lub folder i naciśnij prawy przycisk myszy,
- naciśnij „Ustaw uprawnienia„;
- wprowadź bezpośrednio wartość cyfrową lub zaznacz odpowiednie pola dla odczytu, zapisu i wykonywania dla właściciela, grupy i innych użytkowników;
- naciśnij przycisk „Zapisz” i wyloguj się z DirectAdmin.
Wygląd panelu DirectAdmin może się nieco różnić, podobnie jak używane przeze mnie nazewnictwo. Jego strukturę często hostingodawcy dostosowują do estetyki swojej marki. Na potrzeby tego tekstu ja skorzystałem z ogólnodostępnej wersji demonstracyjnej.
Zmiana Chmod w cPanel
Wprowadzenie zmian w cPanel przebiega w sposób analogiczny do DirectAdmin. Wszystko skupia się na kilku krokach:
- zaloguj się do swojego cPanel;
- w sekcji „File” wybierz „File Manager„;
- wybierz plik lub folder, którego uprawnienia chcesz zmienić;
- naciśnij prawy przycisk myszy i wybierz „Change Permissions„;
- wprowadź bezpośrednio wartość cyfrową lub zaznacz odpowiednie pola dla odczytu, zapisu i wykonywania dla właściciela, grupy i innych użytkowników;
- po wprowadzeniu zmian zatwierdź je i wyloguj się z cPanel.
Podobnie jak w DirectAdmin, wygląd i układ Twojego cPanelu może się nieco różnić w zależności od hostingodawcy.