Co Robi chmod?
chmod (change mode) to polecenie systemów Linux i Unix, które określa, kto może odczytywać, zapisywać i wykonywać plik lub folder. Każdy plik ma trzy zestawy uprawnień: dla właściciela, dla grupy i dla wszystkich pozostałych (others). Powyższy kalkulator zamienia te dziewięć pól wyboru na liczbę lub litery, których oczekuje chmod, i z powrotem.
Tryb możesz podać poleceniu chmod na dwa sposoby: jako liczbę ósemkową, np. chmod 755 script.sh, lub w postaci symbolicznej, np. chmod u+x script.sh. Uprawnienia pliku może zmienić tylko jego właściciel lub root.

Jak Działają Uprawnienia Plików w Linuksie
Każde uprawnienie ma wartość: odczyt (read) = 4, zapis (write) = 2 i wykonywanie (execute) = 1. Zsumuj je dla każdej klasy, aby otrzymać jedną cyfrę od 0 do 7, a potem zapisz trzy cyfry w kolejności: właściciel, grupa, pozostali. Tak więc rwx to 4+2+1 = 7, r-x to 4+0+1 = 5, a rwxr-xr-x to 755.
Po uruchomieniu ls -l zobaczysz to samo w postaci liter, np. -rwxr-xr-x. Pierwszy znak to typ pliku (- dla zwykłego pliku, d dla katalogu, l dla dowiązania symbolicznego), a po nim następują trzy grupy rwx dla właściciela, grupy i pozostałych. Myślnik oznacza, że dane uprawnienie jest wyłączone.
Litery znaczą nieco co innego dla plików i dla folderów:
Plik: otwarcie i odczyt zawartości. Folder: wyświetlenie nazw w środku poleceniem ls.
Plik: zmiana zawartości. Folder: tworzenie, usuwanie i zmiana nazw plików w środku (wymaga to też prawa wykonywania dla folderu). Usunięcie pliku zależy od prawa zapisu folderu, a nie samego pliku.
Plik: uruchomienie go jako programu lub skryptu. Folder: wejście do niego poleceniem cd i otwieranie plików w środku po nazwie. Z prawem odczytu, ale bez wykonywania, możesz wyświetlić nazwy w folderze, lecz niczego w nim nie otworzysz.
u to właściciel pliku, g jego grupa, a o wszyscy pozostali. Linux stosuje tylko pierwszą klasę, która do Ciebie pasuje: jeśli jesteś właścicielem, uprawnienia grupy i pozostałych Cię nie dotyczą, nawet jeśli pozwalają na więcej.
Advertisement
Popularne Uprawnienia chmod i Kiedy Ich Używać
Te tryby obejmują niemal każdy przypadek z praktyki. Większość z nich jest też dostępna w kalkulatorze jako gotowe przyciski.
Domyślne dla większości plików: stron WWW, obrazów i plików konfiguracyjnych, które nie są tajne. Właściciel może edytować, wszyscy pozostali mogą tylko czytać.
Domyślne dla katalogów oraz programów i skryptów, które każdy może uruchamiać. Zmieniać je może tylko właściciel.
Tylko właściciel może czytać i zapisywać. Używaj dla prywatnych kluczy SSH, plików .env, tokenów API i wszystkiego, co zawiera hasło.
Tylko właściciel może otworzyć folder lub wyświetlić jego zawartość. Standard dla ~/.ssh i osobistych folderów ze skryptami.
Właściciel edytuje, jedna grupa (np. grupa serwera WWW) czyta, a nikt inny nie widzi pliku.
Właściciel ma pełny dostęp, grupa może otworzyć i czytać folder, a pozostali nie mają wstępu.
Edytować mogą zarówno właściciel, jak i grupa. Częste na serwerach zespołowych, gdzie kilku użytkowników dzieli jedną grupę.
Właściciel i grupa mogą tworzyć i usuwać pliki w środku; pozostali mogą tylko przeglądać.
Tylko właściciel może czytać i nikt nie może zapisywać. AWS każe uruchomić chmod 400 na pobranej parze kluczy .pem przed użyciem jej z SSH.
Każdy użytkownik i proces na maszynie może go czytać, zmieniać i uruchamiać. Prawie nigdy nie jest to właściwe rozwiązanie, co wyjaśnia następna sekcja.
chmod 755 vs 644 vs 777
755 i 644 różnią się tylko bitem wykonywania: 755 pozwala każdemu uruchomić plik lub otworzyć folder, 644 nie. Dlatego zwykła zasada brzmi: foldery 755, pliki 644. Foldery potrzebują prawa wykonywania, aby można było do nich wejść, a większość plików nigdy nie powinna być uruchamiana.
777 daje prawo zapisu każdemu kontu na maszynie, w tym użytkownikowi serwera WWW. Jeśli jakakolwiek strona lub skrypt na serwerze zostanie przejęty, atakujący może zmienić lub podmienić Twoje pliki, wstrzyknąć złośliwe oprogramowanie do stron albo podrzucić backdoor. Gdy coś kończy się błędem „Permission denied”, prawdziwym rozwiązaniem jest zwykle właściwy właściciel (chown) lub grupa, a nie 777.
Zalecane uprawnienia w najczęstszych przypadkach:
Pliki strony WWW (HTML, PHP, obrazy):
644. Foldery strony:755. Tak zalecają WordPress i większość paneli hostingowych.wp-config.php i inne pliki z hasłami do bazy danych: WordPress sugeruje
440lub400, aby inni użytkownicy serwera nie mogli ich odczytać.600lub640również zachowują prywatność, a przy tym pozwalają właścicielowi na edycję.Foldery uploadu lub cache, do których serwer WWW musi zapisywać: daj grupie serwera WWW prawo zapisu (
775) lub uczyń użytkownika serwera WWW właścicielem, zamiast używać777.Folder ~/.ssh:
700. Klucze prywatne (id_ed25519,id_rsa):600lub400. authorized_keys:600. Klucze publiczne (.pub):644.Skrypty powłoki, które chcesz uruchamiać:
755lub700, jeśli tylko Ty masz je uruchamiać.chmod +x script.shdodaje prawo wykonywania bez zmiany pozostałych bitów.
Advertisement
Naprawa Błędu „Permissions 0644 are too open” dla Kluczy SSH
SSH ignoruje klucz prywatny, który mogą odczytać inni użytkownicy, i wyświetla WARNING: UNPROTECTED PRIVATE KEY FILE!, a po nim Permissions 0644 for '/home/you/.ssh/id_rsa' are too open. Uruchom chmod 600 ~/.ssh/id_rsa (lub chmod 400) i połącz się ponownie. Po stronie serwera, przy domyślnym ustawieniu StrictModes yes, demon SSH ignoruje też authorized_keys, jeśli ten plik, ~/.ssh lub Twój katalog domowy mają prawo zapisu dla grupy lub pozostałych.
Jeśli uprawnienia są poprawne, a połączenie nadal się nie udaje, sprawdź, czy port 22 jest otwarty na serwerze.
Uprawnienia Specjalne: Setuid, Setgid i Sticky Bit
Czwarta, początkowa cyfra dodaje trzy bity specjalne: 4 = setuid, 2 = setgid i 1 = sticky. Sumują się jak pozostałe, więc 6755 to setuid plus setgid. W ls -l zajmują miejsce litery wykonywania: s na pozycji właściciela lub grupy, t na pozycji pozostałych.
Jedna osobliwość Linuksa: GNU chmod 755 dir (oraz chmod 0755 dir) pozostawia istniejący bit setuid lub setgid na katalogu. Aby go usunąć, zrób to jawnie poleceniem chmod g-s dir (lub chmod a-s dir dla obu bitów) albo użyj pięciu cyfr: chmod 00755 dir.
Program z setuid działa z uprawnieniami swojego właściciela, a nie Twoimi. /usr/bin/passwd ma w większości systemów Linux tryb 4755 (-rwsr-xr-x), dzięki czemu zwykli użytkownicy mogą aktualizować należący do roota plik haseł. Linux ignoruje setuid w skryptach powłoki i na katalogach.
Program z setgid działa z grupą pliku. Na folderze jest bardziej przydatny: nowe pliki tworzone w środku dostają grupę folderu, a nowe podfoldery dziedziczą setgid. 2775 to klasyczny tryb dla współdzielonego folderu zespołu.
Na folderze tylko właściciel pliku, właściciel folderu lub root może usuwać pliki w środku lub zmieniać ich nazwy, nawet jeśli każdy może tam zapisywać. Dlatego /tmp ma tryb 1777 (drwxrwxrwt). Linux ignoruje sticky bit na plikach.
Wielka litera S lub T w ls -l oznacza, że bit specjalny jest ustawiony, ale bit wykonywania na tej samej pozycji nie. Na przykład 4644 wyświetla się jako rwSr--r--, a 1666 jako rw-rw-rwT.
Advertisement
Tryb Symboliczny: u, g, o, a z +, - i =
Tryb symboliczny zmienia uprawnienia względem tego, co już jest ustawione, czego zwykła liczba ósemkowa nie potrafi. Składa się z trzech części: kogo dotyczy (u właściciel, g grupa, o pozostali, a wszyscy), operatora (+ dodaje, - usuwa, = ustawia dokładnie) i uprawnień (r, w, x oraz s i t). Kilka zmian oddziel przecinkami bez spacji.
chmod +x file bez litery klasy oznacza wszystkie trzy klasy, z wyjątkiem tego, co blokuje Twój umask. Przy typowym umasku 022 to to samo co a+x.
chmod u+x deploy.sh: pozwól właścicielowi uruchamiać skrypt i nie zmieniaj nic więcej.chmod go-w report.txt: odbierz prawo zapisu grupie i pozostałym.chmod o= secrets.txt: odbierz pozostałym wszystkie uprawnienia.chmod a+r index.html: każdy może czytać plik.chmod u=rwx,g=rx,o=rx app: symboliczny zapis 755. Kalkulator pokazuje tę formę dla każdego trybu.chmod -R u=rwX,go=rX public_html: wielka litera X dodaje prawo wykonywania tylko folderom i plikom, które już są wykonywalne, więc foldery otrzymują 755, a zwykłe pliki 644.
umask: Domyślne Uprawnienia Nowych Plików
Umask decyduje, jakie uprawnienia dostają nowe pliki i foldery. Większość programów tworzy pliki z 666 (rw-rw-rw-), a foldery z 777, po czym każdy bit ustawiony w umasku zostaje wyłączony. Przy typowym umasku 022 nowe pliki otrzymują 644, a nowe foldery 755.
To maska bitowa, a nie odejmowanie. Przy umasku 027 pliki dostają 640; odjęcie 027 od 666 cyfra po cyfrze nie daje nawet prawidłowego trybu. Otwórz kartę Umask w kalkulatorze, aby zobaczyć wynik dla dowolnej wartości.
022: pliki 644, foldery 755. Typowa wartość domyślna.002: pliki 664, foldery 775. Pozwala Twojej grupie edytować to, co tworzysz; częste tam, gdzie każdy użytkownik ma własną prywatną grupę.027: pliki 640, foldery 750. Nic dla pozostałych, dobry wybór na serwerach.077: pliki 600, foldery 700. Całkowicie prywatne.Uruchom
umask, aby zobaczyć swój,umask -S, aby zobaczyć go w postaci liter, iumask 027, aby zmienić go dla bieżącej powłoki. Dodaj polecenie do~/.bashrclub~/.profile, aby zachować zmianę.
Advertisement
Jak Używać Kalkulatora Chmod
Zaznacz Odczyt, Zapis i Wykonywanie dla właściciela, grupy i pozostałych albo kliknij gotowe ustawienie, np. 644 lub 755. Każdy wiersz na bieżąco pokazuje swoją cyfrę.
Wpisz liczbę ósemkową, np. 750 lub 2775, albo wklej ciąg symboliczny, np. rwxr-x---. Działa też pełny ciąg ls -l, np. drwxr-sr-x, a typ pliku zostanie pokazany.
Zaznacz Setuid, Setgid lub Sticky, aby uzyskać 4-cyfrowy tryb. Ostrzeżenie pojawia się, gdy tryb pozwala każdemu zapisywać bez sticky bitu.
Wpisz nazwę pliku lub folderu, zaznacz Rekurencyjnie dla całego drzewa katalogów i skopiuj liczbowe lub symboliczne polecenie chmod. Adres strony zapamiętuje tryb (np. ?mode=750), więc możesz dodać go do zakładek lub udostępnić.
Przykłady Polecenia chmod
Uruchom je w terminalu Linux lub macOS. Dodaj na początku sudo, gdy plik należy do innego użytkownika lub do roota.
chmod +x deploy.sh # dodaj prawo wykonywania
chmod 755 deploy.sh # lub ustaw pełny tryb
./deploy.shfind /var/www/html -type d -exec chmod 755 {} +
find /var/www/html -type f -exec chmod 644 {} +chmod -R 755 folder # pliki też staną się wykonywalne
chmod -R u=rwX,go=rX folder # foldery 755, pliki 644chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_ed25519.pubstat -c '%a %n' file # Linux: 644 file
stat -f '%Lp %N' file # macOS: 644 file
stat -f '%Mp%Lp %N' file # macOS z bitami specjalnymi: 0644 filechgrp developers /srv/project
chmod 2775 /srv/project # nowe pliki dostają grupę developersWięcej Narzędzi dla Programistów
Inne darmowe narzędzia dla programistów i administratorów systemów, wszystkie działające w Twojej przeglądarce. Potrzebujesz unikalnych identyfikatorów dla plików lub rekordów? Wypróbuj generator UUID.
Zakresy CIDR, maski sieci i dostępne hosty z wizualną siatką bitów.
Sprawdź, czy port 22, 80, 443 lub dowolny inny jest otwarty.
Silne, losowe hasła z analizą entropii.
Unix timestamp na datę i z powrotem, w dowolnej strefie czasowej.