Oblicz uprawnienia plików Unix i polecenie chmod
Ten kalkulator chmod pokazuje uprawnienia plików w Linuksie i macOS w każdej potrzebnej postaci: zaznacz odczyt, zapis i wykonywanie dla właściciela, grupy i wszystkich pozostałych albo wpisz tryb ósemkowy, np. <code>755</code>, lub symboliczny, np. <code>rwxr-xr-x</code>, a pozostałe widoki same się zaktualizują. Otrzymasz pasujące polecenie <code>chmod</code> w formie liczbowej i symbolicznej, bity setuid, setgid i sticky oraz zrozumiały opis tego, kto co może. Wszystko jest liczone w Twojej przeglądarce.
Jak obliczyć uprawnienia chmod
- 1Zaznacz uprawnienia dla pól Właściciel, Grupa i Pozostali albo wpisz tryb ósemkowy, np.
644, lub symboliczny, np.rw-r--r--. Możesz też wkleić całą kolumnę zls -l, np.drwxr-sr-x. - 2Wybierz Plik lub Katalog: odczyt, zapis i wykonywanie znaczą dla nich co innego, a objaśnienie zmienia się odpowiednio.
- 3W razie potrzeby dodaj bit setuid, setgid lub sticky albo zacznij od gotowego trybu, np. 755 lub 600.
- 4Wpisz ścieżkę, włącz Rekurencyjnie, jeśli zmiana ma objąć całe drzewo, i skopiuj polecenie chmod.
Jak działają uprawnienia ósemkowe
Każdy plik ma trzy zestawy uprawnień: dla właściciela (u), dla grupy (g) i dla pozostałych (o), czyli wszystkich innych. Każdy zestaw to trzy bity — odczyt, zapis i wykonywanie — a cyfra ósemkowa to po prostu ich suma: odczyt to 4, zapis 2, a wykonywanie 1. Zatem 7 to rwx (4+2+1), 6 to rw- (4+2), 5 to r-x (4+1), a 4 to samo r--.
Trzy cyfry tworzą cały tryb w kolejności: właściciel, grupa, pozostali. chmod 755 daje więc właścicielowi rwx, a wszystkim innym r-x, co zapisuje się jako rwxr-xr-x, a chmod 644 daje właścicielowi rw-, a pozostałym r--, czyli rw-r--r--. Czwarta cyfra z przodu przechowuje bity specjalne: 4 to setuid, 2 to setgid, a 1 to sticky, jak w chmod 1777.
Popularne wartości chmod
- 644 (rw-r--r--)
- Domyślne dla zwykłych plików: właściciel może edytować, wszyscy mogą czytać. Dobre dla HTML, obrazów i większości konfiguracji.
- 755 (rwxr-xr-x)
- Domyślne dla katalogów, skryptów i programów: wszyscy mogą czytać i uruchamiać, zmieniać może tylko właściciel.
- 600 (rw-------)
- Prywatne pliki, które czyta tylko właściciel: klucze prywatne SSH, pliki .env, dane logowania. ssh odrzuca klucz prywatny, który mogą czytać inni.
- 700 (rwx------)
- Prywatny katalog, np. ~/.ssh, do którego może wejść tylko właściciel.
- 664 / 775
- Jak 644 i 755, ale grupa też może zapisywać: dla wspólnych folderów projektu, gdy współpracownicy są w jednej grupie.
- 777 (rwxrwxrwx)
- Każdy może czytać, zmieniać i uruchamiać. Prawie nigdy nie jest właściwym rozwiązaniem błędu uprawnień, a na serwerze WWW to zagrożenie bezpieczeństwa.
- 1777 (rwxrwxrwt)
- Zapis dla wszystkich ze sticky bit, jak w /tmp: każdy może tworzyć pliki, ale usunąć plik może tylko jego właściciel.
Uprawnienia katalogów
W katalogu te trzy litery znaczą co innego. Odczyt pozwala wyświetlić nazwy w środku; zapis pozwala tworzyć, zmieniać nazwy i usuwać wpisy; wykonywanie (często zwane wyszukiwaniem) pozwala wejść do niego przez cd i sięgać do plików po nazwie. Bez wykonywania odczyt i zapis niewiele dają, dlatego katalogi prawie zawsze mają x tam, gdzie mają r — 755 zamiast 644.
Usunięcie pliku to zmiana katalogu, a nie samego pliku. Każdy, kto ma prawo zapisu i wykonywania w katalogu, może usunąć w nim dowolny plik, nawet cudzy i tylko do odczytu — chyba że katalog ma sticky bit.
Setuid, setgid i sticky bit
W zapisie symbolicznym bity specjalne zastępują literę wykonywania: s, gdy wykonywanie też jest ustawione, i S, gdy nie jest, a dla sticky bit t lub T. Wielka litera zwykle oznacza błąd, bo program z setuid, którego nikt nie może uruchomić, nic nie robi.
Osobliwość GNU coreutils: chmod 755 na katalogu zachowuje istniejący bit setuid lub setgid. Aby je wyczyścić liczbą, podaj pięć cyfr — chmod 00755 — lub użyj chmod g-s.
- Setuid (4000, u+s)
- Program uruchamia się z uprawnieniami swojego właściciela, a nie wywołującego. Dzięki temu passwd zapisuje /etc/shadow jako root. Linux ignoruje go w skryptach i katalogach.
- Setgid (2000, g+s)
- Program uruchamia się z uprawnieniami swojej grupy. W katalogu nowe pliki dziedziczą grupę katalogu zamiast grupy głównej twórcy — typowe ustawienie dla wspólnych folderów zespołu (2775).
- Sticky bit (1000, +t)
- W katalogu usuwać lub zmieniać nazwy plików może tylko właściciel pliku, właściciel katalogu lub root. Współczesny Linux ignoruje go w plikach.
Chmod liczbowy czy symboliczny?
Tryb liczbowy, np. chmod 644 file, ustawia wszystkie bity naraz — tego chcesz, gdy znasz stan końcowy. Forma symboliczna jest elastyczniejsza: chmod u=rw,g=r,o=r file ustawia to samo, a chmod g+w file lub chmod o-rwx file zmieniają tylko wskazane bity i nie ruszają reszty.
Uważaj z chmod -R: jeden tryb dla wszystkich plików i katalogów w drzewie zwykle daje plikom zbędny bit wykonywania. Użyj find . -type d -exec chmod 755 {} + i find . -type f -exec chmod 644 {} +, aby potraktować je osobno, albo wielkiego X w chmod -R u=rwX,go=rX, które dodaje wykonywanie tylko katalogom i plikom, które już je miały. Nowe pliki dostają początkowe uprawnienia z umask: umask 022 daje pliki 644 i katalogi 755. Do dopasowywania nazw plików w skryptach powłoki wypróbuj tester wyrażeń regularnych.
Najczęstsze pytania
- Co oznacza chmod 755?
- 755 daje właścicielowi odczyt, zapis i wykonywanie (7), a grupie i wszystkim innym odczyt i wykonywanie (5 i 5), co zapisuje się jako rwxr-xr-x. To typowy tryb dla katalogów, skryptów i programów.
- Co oznacza chmod 644?
- 644 daje właścicielowi odczyt i zapis (6), a wszystkim innym tylko odczyt (4 i 4), co zapisuje się jako rw-r--r--. To typowy tryb dla zwykłych plików, takich jak strony WWW, obrazy i pliki konfiguracyjne.
- Czym różni się 755 od 644?
- 755 dodaje wykonywanie dla wszystkich. Plik można wtedy uruchomić jako program, a do katalogu można wejść. Używaj 644 dla plików, które są tylko czytane, i 755 dla katalogów i plików wykonywalnych.
- Czy chmod 777 jest bezpieczny?
- Rzadko. 777 pozwala każdemu użytkownikowi systemu zmienić lub podmienić plik, a na serwerze WWW napastnik, który wejdzie przez jedną stronę, może modyfikować inne. Zamiast tego popraw właściciela przez chown lub daj dostęp grupie (775 lub 664).
- Jakie uprawnienia powinien mieć klucz prywatny SSH?
- 600 (rw-------) lub 400 tylko do odczytu, a sam ~/.ssh — 700. OpenSSH odmawia użycia klucza prywatnego, który mogą czytać inni, i zgłasza "UNPROTECTED PRIVATE KEY FILE".
- Co oznacza s lub t w rwsr-xr-x?
- s na pozycji właściciela lub grupy to bit setuid lub setgid z ustawionym wykonywaniem; t na pozycji pozostałych to sticky bit. Wielkie S lub T oznacza, że bit specjalny jest ustawiony bez prawa wykonywania pod nim.
- Jak zamienić rwxr-xr-x na liczbę?
- Podziel na trzy grupy — rwx, r-x, r-x — i w każdej dodaj r=4, w=2 i x=1: 7, 5, 5, co daje 755. Wpisz to w pole symboliczne powyżej, aby przeliczyć od razu.
- Czy to narzędzie zmienia jakieś pliki?
- Nie. Oblicza tylko tryb i polecenie, a uruchamiasz je samodzielnie. Wszystko dzieje się w Twojej przeglądarce.