Jak działają uprawnienia chmod: 755, 644 i sticky bit
W systemach uniksopodobnych chmod zmienia uprawnienia dostępu do plików i katalogów. Uprawnienia do odczytu, zapisu i wykonywania ustawia się osobno dla właściciela, grupy i pozostałych użytkowników. Uprawnienia katalogów mają własne znaczenie: dotyczą wyświetlania nazw, tworzenia lub usuwania wpisów oraz dostępu do znanej ścieżki.
Tryby liczbowe i symboliczne
Polecenie w trybie symbolicznym, np. chmod u+x script.sh, nadaje właścicielowi prawo wykonywania pliku. W trybie liczbowym odczyt to 4, zapis to 2, a wykonywanie to 1. Zatem 755 oznacza rwxr-xr-x: właściciel może odczytywać, zapisywać i wykonywać, a grupa i pozostali mogą odczytywać i wykonywać. Tryb 644 często sprawdza się dla zwykłego publicznego pliku, ale to, czy jest odpowiedni, zależy od aplikacji. Nie traktuj popularnej wartości jak uniwersalnego ustawienia bezpieczeństwa.
Dlaczego uprawnienia katalogów są ważne
W przypadku katalogu odczyt pozwala wyświetlać nazwy, zapis pozwala zmieniać wpisy katalogu, a wykonywanie pozwala przechodzić przez znaną ścieżkę. Usunięcie pliku zależy zwykle od uprawnień do katalogu nadrzędnego, a nie od prawa zapisu do samego pliku. Plik z uprawnieniami 444 może więc nadal usunąć ktoś, kto ma wystarczający dostęp do katalogu. To rozróżnienie wyjaśnia podręcznik GNU Coreutils. Jeśli dostęp nie działa, choć uprawnienia samego pliku pozwalają na odczyt, sprawdź każdy katalog nadrzędny i konto, na którym działa usługa.
Przykład z hostingu stron
Wyobraź sobie katalog z plikami HTML, które serwer WWW musi odczytywać, ale aktualizować może je tylko właściciel. Punktem wyjścia może być 755 dla katalogów i 644 dla zwykłych plików. Nadal trzeba jednak uwzględnić konto usługi, grupy i zasady hostingu; prywatne pliki konfiguracyjne mogą wymagać ściślejszego dostępu. Ustawienie wszystkiego na 777, aby pozbyć się błędu, daje lokalnym użytkownikom szerokie prawa modyfikacji i może otworzyć lukę w zabezpieczeniach. Przed zmianą sprawdź bieżącego właściciela i uprawnienia za pomocą stat i ls -l.
Setuid, setgid i sticky bit
Dodatkowa cyfra ósemkowa na początku określa bity specjalne: 4 dla setuid, 2 dla setgid i 1 dla sticky. Na przykład 4755 włącza setuid dla pliku wykonywalnego; 455 tego nie robi. Setuid należy stosować ostrożnie, ponieważ błędy w programie mogą zostać wykorzystane z uprawnieniami właściciela. W przypadku katalogów setgid może sprawić, że nowe wpisy dziedziczą grupę katalogu. Sticky bit na współdzielonym katalogu, takim jak /tmp, ogranicza, kto może usuwać lub zmieniać nazwy plików innego użytkownika. Przed użyciem chmod -R przejrzyj dokładnie całe drzewo: zwykłe pliki, pliki wykonywalne i katalogi rzadko potrzebują identycznych trybów.