chmod 755 wyjaśnione
Litery rwx to nie magiczne znaki. To Twój model bezpieczeństwa.
Na początku ustawiłem na serwerze proces backupu i dałem jego kontu prawo czytania wszystkiego, bo to był najszybszy sposób, żeby zadziałało. Chodził bez problemu przez miesiące. Potem usiadłem pewnego wieczoru, żeby porządnie zaudytować maszynę, i zobaczyłem, że mały, niczym niewyróżniający się skrypt ma prawo odczytu do każdego dokumentu, każdego zdjęcia i każdego pliku konfiguracyjnego w systemie — łącznie z tymi trzymającymi dane dostępowe do innych usług.
Nic złego się nie wydarzyło. To nie to samo, co „nic złego nie mogło się wydarzyć", a odległość między tymi dwoma stanami jest dokładnie tym, o czym jest ten tekst. Naprawa zajęła dwadzieścia minut i sprowadziła się do zrozumienia dziewięciu znaków, na które większość ludzi patrzy raz i uznaje, że to nie dla nich.
Dziewięć znaków, trzy pytania, trzy grupy
Kiedy wypisujesz pliki na Linuksie, obok każdego widzisz coś w rodzaju rw-r--r--. Wygląda jak szyfr. Nie jest — to mała tabelka, a kiedy raz zobaczysz tę tabelkę, nie da się jej odzobaczyć.
System może zadać o każdym pliku trzy pytania: czy możesz go przeczytać, czy możesz go zmienić, czy możesz go uruchomić. Trzy odpowiedzi, tak albo nie, zapisane jako r, w, x — albo myślnik tam, gdzie odpowiedź brzmi nie.
I są trzy grupy, o które system pyta: właściciel pliku, grupa, do której należy, i cała reszta. Trzy pytania razy trzy grupy to dziewięć znaków. To cały system. Pierwszy blok to właściciel, drugi grupa, trzeci reszta świata.
Zatem rw-r--r-- czyta się: właściciel może czytać i zmieniać, grupa może tylko czytać, reszta może tylko czytać. Nikt nie może uruchomić, bo to dokument, a dokumenty nie są programami. Przeczytaj to zdanie raz przy tych dziewięciu znakach, a zapis przestanie być szyfrem na zawsze.
Skąd się bierze 755
Liczba to ta sama tabelka, skompresowana. Każde z trzech uprawnień ma wartość: odczyt to 4, zapis to 2, uruchomienie to 1. Dodaj te, które chcesz przyznać, a wyjdzie cyfra od 0 do 7. Jedna cyfra na grupę, razem trzy cyfry.
Czyli 7 to 4 plus 2 plus 1 — wszystko. 5 to 4 plus 1 — odczyt i uruchomienie, bez zmieniania. 6 to 4 plus 2 — odczyt i zmiana, bez uruchamiania. A 755 znaczy: właściciel może wszystko, reszta może czytać i uruchamiać, ale nie modyfikować. To standardowe ustawienie dla programu i teraz wiesz dlaczego, zamiast mieć to zapamiętane.
Dwa jeszcze warte zapamiętania: 644 dla zwykłych dokumentów — właściciel czyta i pisze, reszta tylko czyta. I 600 dla wszystkiego, co zawiera sekret: tylko właściciel, nikt inny. To trzecie jest ustawieniem, którego wymaga klucz prywatny, a większość narzędzi odmówi użycia pliku klucza czytelnego dla innych, co jest przysługą, którą system Ci wyświadcza.
Liczba, po którą ludzie sięgają, gdy są zmęczeni
Gdzieś w internecie, na każdy problem z uprawnieniami, jaki ktokolwiek miał, jest odpowiedź mówiąca: ustaw 777 i zadziała.
Zadziała. Znaczy, że każdy może czytać, zmieniać i uruchamiać — gdzie „każdy" obejmuje każdy proces na maszynie, każde konto i cokolwiek, co zdoła tam uruchomić kod. Rozwiązałeś problem z uprawnieniami, usuwając uprawnienia z systemu, co jest tą samą techniką, co naprawienie zacinających się drzwi przez zdjęcie ich z zawiasów.
Robiłem to. Pod presją czasu, na maszynie, o której wmówiłem sobie, że jest tymczasowa, a potem nie była. Właściwy ruch, kiedy uprawnienie Cię blokuje, to zapytać, na które z trzech pytań pada odpowiedź „nie" i dla której z trzech grup — a potem przyznać dokładnie to. Zajmuje trzydzieści sekund dłużej i zostawia system zdolny do obrony.
Co to naprawdę chroni
Wróćmy do konta backupu. Naprawa polegała na stworzeniu dedykowanego konta, wrzuceniu go do grupy, przyznaniu tej grupie prawa odczytu do folderów objętych backupem i odebraniu dostępu do całej reszty. Dwadzieścia minut.
Nie kupiło to ochrony przed atakiem. Kupiło ograniczenie jego konsekwencji. Jeśli ten proces kiedykolwiek zostanie przejęty, napastnik dostaje to, co on miał: prawo odczytu do zestawu folderów. Nie bibliotekę zdjęć, nie pliki konfiguracyjne, nie możliwość zainstalowania czegokolwiek, zmiany systemu czy sięgnięcia do sieci w czyimś imieniu. Rozmiar szkody jest rozstrzygnięty z góry, przeze mnie, w spokojny wieczór, a nie na bieżąco przez tego, kto wszedł.
To jest ten sam kształt co każda inna decyzja o uprawnieniach na porządnie ustawionej maszynie i dlatego przechodzę przez to na każdej, którą przygotowuję. Nie dlatego, że spodziewam się ataku na domowy serwer plików. Dlatego, że koszt zrobienia tego to dwadzieścia minut, a koszt niezrobienia jest nieograniczony, i ta asymetria rozstrzyga sprawę bez żadnej analizy zagrożeń.
Te dziewięć znaków to nie próg wejścia. To system mówiący Ci w najkrótszym możliwym zapisie, kto dokładnie co może — czyli informację, którą większość systemów całkowicie przed Tobą ukrywa. Nauczenie się tego porządnie zajęło mi wieczór i od tamtej pory nieraz uratowało mnie przede mną samym.
Chcesz Linuxa na biurku, a nie tylko na ekranie?
Dostarczamy odnowione komputery Dell OptiPlex z Linuxem Mint już zainstalowanym, zaktualizowanym i gotowym do pracy — z klawiaturą i myszą w zestawie. W Białymstoku i okolicach przywozimy i konfigurujemy na miejscu. Albo wyślij nam maszynę, którą już masz, a zrobimy to samo z nią.