Skip to main content
Oktalowy
100

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.

  1. 755 → rwxr-xr-x, zwykły tryb katalogu albo pliku wykonywalnego
  2. 644 → rw-r--r--, zwykły tryb pliku
  3. 600 → rw-------, czytelny wyłącznie dla właściciela
  4. 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.