Przewodnik po systemie ósemkowym
System octalowy (ósemkowy)
System ósemkowy używa 8 cyfr: 0-7. Każda cyfra octalowa reprezentuje dokładnie 3 bity binarne. Dlatego 64₁₀ = 100₈. Historycznie używany w systemach UNIX/Linux do uprawnień plików (chmod 755 = rwxr-xr-x) i adresowania pamięci w starszych systemach 8-bitowych.
Uprawnienia plików w Linux
Prawa dostępu w Linux (chmod) używają 3 cyfr octalowych: właściciel, grupa, inni. Każda cyfra to suma uprawnień: odczyt=4, zapis=2, wykonanie=1. Przykładowo chmod 755 = rwxr-xr-x (7=w+z+w, 5=w+d, 5=w+d). chmod 644 = rw-r--r--.
Praktyczne zastosowania
Uprawnienia plików: chmod 400 (tylko odczyt), chmod 755 (pełne), chmod 600 (prywatny). W Python i Java używane rzadko. W starszych systemach IBM/OS/360 używane były do adresowania dysków. Konwersja: 64₁₀ = 100₈, 255₁₀ = 377₈.
System ósemkowy przetrwał, bo 755 to dokładnie dziewięć bitów uprawnień
System ósemkowy niemal zniknął z informatyki, z jednym rzucającym się w oczy wyjątkiem: uprawnieniami plików w Uniksie. To nie przyzwyczajenie. Trzy flagi uprawnień mieszczą się dokładnie w jednej cyfrze ósemkowej, a trzy klasy użytkowników dają dziewięć bitów — więc tryb to ściśle trzy cyfry, bez wypełniacza i bez reszty.
Jak to działa
- Przelicza między systemem ósemkowym, dziesiętnym, dwójkowym i szesnastkowym.
- Odczytuje tryby uprawnień plików, gdzie każda cyfra koduje odczyt, zapis i wykonanie dla jednej klasy.
- Uwidacznia odpowiedniość trzech bitów na cyfrę, która jest całym powodem trwania tej notacji.
1 cyfra ósemkowa = 3 bity = 8 wartości (0–7) uprawnienia: r = 4, w = 2, x = 1 7 = 4+2+1 = rwx 5 = 4+0+1 = r-x 6 = 4+2+0 = rw- tryb = cyfra właściciela, grupy, pozostałych → 9 bitów, 512 możliwych trybów
Przykład z liczbami
Odczytanie najczęstszych trybów jako ich symbolicznych odpowiedników.
- 755 → rwxr-xr-x, zwykły tryb katalogu albo pliku wykonywalnego
- 644 → rw-r--r--, zwykły tryb pliku
- 600 → rw-------, czytelny wyłącznie dla właściciela
- 777 → rwxrwxrwx, zapisywalny przez każdego
Każda cyfra jest niezależnie sumą 4, 2 i 1. 755 daje właścicielowi wszystko, a grupie i pozostałym odczyt i wykonanie, ale nie zapis — dlatego jest domyślny dla wszystkiego, co ma być uruchamiane albo otwierane, lecz nie modyfikowane.
Jak czytać wynik
- 777 to niemal zawsze błąd. Pozwala każdemu użytkownikowi systemu zmienić plik i sięga się po niego zwykle wtedy, gdy problem z uprawnieniami nie został zrozumiany, a nie gdy zapis dla wszystkich jest naprawdę potrzebny.
- Katalog wymaga prawa wykonania, by w ogóle dało się do niego wejść. Odczyt na katalogu wypisuje nazwy; wykonanie pozwala sięgnąć po to, co w środku. Dlatego 644 na katalogu daje mylącą sytuację, w której widać nazwy plików, których nie da się otworzyć.
- Umask odejmuje, a nie ustawia. Przy typowej masce 022 nowy plik startuje z 666 i staje się 644, a nowy katalog startuje z 777 i staje się 755 — dokładnie stąd biorą się te dwa znane tryby.
- Czwarta cyfra z przodu ustawia setuid, setgid i bit lepkości — 4755 zamiast 755. Rzadko jest potrzebna i warto ją zrozumieć przed użyciem, bo setuid na niewłaściwym pliku wykonywalnym to realne zagrożenie eskalacją uprawnień.
Częste pytania
- Dlaczego ósemkowy, a nie szesnastkowy, do uprawnień?
- Bo uprawnienia występują w grupach po trzy bity, a system ósemkowy to dokładnie trzy bity na cyfrę. Szesnastkowy rozcinałby grupę trzech bitów na granicy cyfr, więc schludne odwzorowanie jedna cyfra na klasę by przepadło.
- Czego właściwie używać?
- 644 dla zwykłych plików, 755 dla katalogów i plików wykonywalnych, 600 dla wszystkiego, co zawiera tajemnice, jak klucze czy poświadczenia. Wychodź poza to tylko wtedy, gdy potrafisz dokładnie powiedzieć, jaki dodatkowy dostęp przyznajesz i komu.