Sprawdzanie uprawnień Linux: Permission denied bez chmod 777

Permission denied nie oznacza automatycznie, że trzeba przyznać dostęp wszystkim. Najpierw sprawdź użytkownika, plik i ścieżkę. Poradnik dotyczy klasycznych uprawnień Unix w GNU/Linux; dodatkowe mechanizmy kontroli mogą działać niezależnie.

Krok po kroku

  1. Zapisz pełną ścieżkę i zamierzoną operację: odczyt, zapis, wykonanie lub utworzenie pliku w katalogu. W przykładach zastąp /path/file rzeczywistą ścieżką.
  2. Sprawdź id, aby ustalić użytkownika i grupy bieżącej sesji. Dla usługi liczy się jej konto wykonawcze, nie Twoja sesja interaktywna. Ustal je w konfiguracji usługi.
  3. Sprawdź ls -ld /path/file oraz ls -ld /path. Wynik pokazuje typ, tryb, właściciela i grupę. Sprawdź także pozostałe katalogi nadrzędne. Dowiązanie symboliczne nie jest plikiem docelowym; zbadaj cel osobno.
  4. Ustal właściwą klasę: właściciel, w przeciwnym razie pasująca grupa, a następnie inni. Dla katalogów x umożliwia przechodzenie, a r wyświetlanie listy; tworzenie i usuwanie wpisów zwykle wymaga w i x do katalogu. Sticky bit i inne reguły mogą dodatkowo ograniczać dostęp.
  5. Jeśli klasyczne prawa pasują, sprawdź ACL, SELinux/AppArmor, montowanie tylko do odczytu lub przestrzeń nazw kontenera. Plus w polu trybu może oznaczać dodatkowe metody dostępu. Nie wyłączaj ochrony globalnie.
  6. Dopiero po ustaleniu konkretnego brakującego prawa zapisz poprzedni tryb i zmień jeden plik. chmod u+r /path/file dodaje wyłącznie odczyt dla właściciela. Pomaga tylko wtedy, gdy brakuje właśnie tego dostępu; unikaj zmian rekurencyjnych i ogólnego 777.

Sprawdzenie wyniku

Powtórz pierwotną operację na tym samym koncie i ponownie sprawdź tryb. Sukces jako root nie dowodzi dostępu użytkownika usługi. Jeśli błąd pozostaje, zbadaj następny potwierdzony trop zamiast rozszerzać uprawnienia.

Cofnięcie i ograniczenia

Polecenia diagnostyczne tylko odczytują dane. Po zmianie przywróć zapisany stan; ACL i bity specjalne uwzględnij osobno. chmod 644 nie jest uniwersalnym cofnięciem, zwłaszcza dla katalogów i plików wykonywalnych.

Źródło