Prawo wyszukiwania w każdym katalogu przed kluczem
Klucz może mieć 0600 i mimo to odmówić otwarcia, gdy katalog nadrzędny blokuje przejście. Przejdź całą ścieżkę jako konto usługi, zanim zmienisz jakikolwiek tryb.
Tryb 0600 i właściwy właściciel nie gwarantują, że usługa zdoła otworzyć klucz. Brakujące uprawnienie zwykle znajduje się w katalogu wyżej. Linux rozwiązuje ścieżkę komponent po komponencie, a każdy krok wymaga prawa wyszukiwania, zanim zostanie podjęta następna próba. Czytaj całą ścieżkę, a nie ostatni wiersz listingu.
Prawo odczytu jest ostatnim krokiem, nie jedynym
Otwarcie pliku wymaga, aby jądro przeszło od katalogu głównego lub roboczego przez każdy komponent ścieżki. Katalog bez prawa wyszukiwania zatrzymuje to przejście błędem uprawnień. Tryb samego pliku nigdy nie jest sprawdzany, więc doskonale czytelny klucz wygląda na nieczytelny. Błąd często pojawia się przy otwieraniu bez wskazania katalogu, dlatego obwinia się ostatni plik.
Dla katalogu bit wykonania oznacza wyszukiwanie, a nie wykonywanie zawartości. Klucz pozostaje danymi i żadna część tej naprawy nie wymaga oznaczenia go jako wykonywalny.
Przejdź ścieżkę jako konto usługi
Wypisz każdy komponent wraz z właścicielem i trybem, następnie powtórz odczyt jako rzeczywista tożsamość usługi. Różnica między twoją powłoką a demonem jest często całą odpowiedzią. Podążaj za dowiązaniami symbolicznymi do rzeczywistego celu, ponieważ sprawdzana jest właśnie rozwiązana ścieżka.
namei -l /etc/openvpn/client/office.key
sudo -u vpn-reader stat -c '%A %U:%G %n' /etc/openvpn/client/office.key
Usługa może także otwierać pliki w więcej niż jednej fazie. Część materiału jest czytana podczas uprzywilejowanej konfiguracji, a inne pliki są otwierane po zrzuceniu uprawnień. Powłoka root, która czyta plik, nie odtwarza dostępu późniejszego procesu roboczego. Przestrzeń nazw montowania może pokazywać inny widok tej samej ścieżki, zwłaszcza w kontenerze, więc porównaj widok systemu plików demona ze swoim.
Zmień najwęższe pasujące uprawnienie
Wybierz najmniejszy układ, który daje procesowi dostęp: kontrolowaną grupę z prawem wyszukiwania w potrzebnych katalogach, zarządzaną lokalizację, którą usługa już posiada, lub inny udokumentowany mechanizm. Czytanie pliku nie wymaga prawa zapisu w jego katalogu. Szerokie prawo zapisu grupy na uprzywilejowanej konfiguracji nie jest zwykłą naprawą przejścia. Rekursywne 0777 też nie jest rozwiązaniem.
Zapisz, który komponent zmieniłeś i dlaczego. Zmiana uprawnień bez zapisanej przyczyny jest trudna do przejrzenia i łatwa do zapomnienia.
Za tryby spójrz dopiero po przejściu
Jeśli bity trybu wydają się wystarczające, pozostałe kontrole to ACL, polityka bezpieczeństwa i ograniczenia sandboxa. ACL może przyznać dostęp, który bity trybu zdają się wykluczać, albo odmówić dostępu, który zdają się dopuszczać. Te ustawienia należą do obecnego właściciela konfiguracji i należy je dostrajać wąsko, a nie wyłączać. Różnica katalogu głównego lub roboczego może też wyjaśnić bezwzględną ścieżkę, która działa w jednym kontekście, a w innym zawodzi.
Nie trać z oczu tego, czym jest plik, gdy naprawiasz dostęp. Certyfikat CA jest publiczny z założenia, klucz prywatny nie. Pliki, które klient przepisuje, potrzebują też innych praw zapisu niż klucz tożsamości tylko do odczytu. Sprawdź metadane bez drukowania sekretów, a następnie potwierdź, że sama usługa działa po zmianie. Krótka notatka w dokumentacji usługi oszczędza następnej osobie tego samego przejścia.