Prawa dostępu (tylko UNIX)
Unix i pochodne, jako systemu przeznaczone dla wielu
użytkowników, zawierają system zabezpieczania dostępu do plików
przez niepowołane osoby. System ten opiera się o przydzielanie
praw poszczególnym osobom (a konkretniej ich kontom systemowym)
oraz grupom, do których użytkownicy należą.
Każdemu plikowi i katalogowi w systemie można przypisać 3
komplety praw. Każdy z tych kompletów to: prawo wykonywania
(litera 'x' lub liczba 1) - w przypadku katalogów oznacza to
możliwość 'wejścia' w niego, prawo zapisu (litera 'w' lub liczba
2) i prawo odczytu (litera 'r' lub liczba 4).
Pierwszy komplet tych praw dotyczy właściciela pliku, drugi
grupy a trzeci użytkowników, którzy nie są właścicielami ani nie
należą do grupy. Liczby przypisane konkretnym prawom służą do
zapisu ósemkowego. Zapis taki to 3 cyfry, z których każda
odpowiada kompletowi praw - sumie liczb oznaczających prawa.
Przyładowo, liczba 7 to komplet praw wykonywania, zapisu i
odczytu (1+2+4=7) a liczba 5 to prawo odczytu i wykonywania
(1+4=5). Czyli aby nadać właścicielowi komplet praw, grupie
odczyt i zapis a reszcie tylko odczyt, należy ustawić prawa
"0764" (cyfra zero na początu służy do poinformowania PHP, że
liczba zapisana jest w formacie ósemkowym).
Do ustawiania praw dostępu służy funkcja
chmod($nazwa_pliku, $tryb), gdzie drugi
parametr to prawa dostępu zapisane w formacie ósemkowym. Inne
funkcje przydatne przy pracy z systemem zabezpieczeń to
chown($nazwa_pliku, $user), zmieniająca
właściciela pliku, i chgrp($nazwa_pliku,
$grupa), zmieniająca grupę.
Ustawienie odpowiednich praw dostępu to sprawa bardzo ważna w
przypadku skryptów zapisujących coś do plików. Błąd "Permission
denied" zdarza się bardzo często i można go rozwiązać właśnie
przez ustawienie odpowiednich praw. Aby skrypt mógł coś zapisać
w pliku, niezbędne jest ustawienie prawa zapisu do tego pliku.
PHP zazwyczaj pracuje jako użytkownik nobody lub http
- można to sprawdzić wywołując funkcję
phpinfo().