Ustawienie 0777 na folder
(a mówię tutaj o folderze, a nie pliku) nie wiąże się z żadnym ryzykiem bezpieczeństwa wykonania, jak niektórzy by twierdzili.
Execute is needed on a directory to access the inode information of the files within. You need this to search a directory to read the inodes of the files within. For this reason the execute permission on a directory is often called search permission instead.
Zobacz http://content.hccfl.edu/pollock/aunix1/filepermissions.htm
Ryzyko to:
- każdy może czytać pliki w tym folderze (pod warunkiem, że sam plik ma
r
uprawnienia użytkownika / grupy próbującej go odczytać lub dla others
)
- każdy może tworzyć pliki w tym folderze (i opcjonalnie je wykonywać, ale tylko te utworzone przez tego konkretnego użytkownika)
- każdy może usunąć pliki należące do innych osób w tym folderze (twoje pliki nie są zabezpieczone, niezależnie od właściciela / pozwolenia)
Jeśli chcesz zabezpieczyć niektóre pliki, musisz utworzyć inny folder z „normalnymi” uprawnieniami (rw tylko dla ciebie lub rw dla ciebie i twojej grupy) i umieścić w nim swoje pliki.
Z drugiej strony nikt nie mógł zamienić pliku niewykonywalnego na plik wykonywalny (chmod nie jest dozwolony, jeśli nie jesteś właścicielem pliku).
Jakie ryzyko nie jest?
Niektórzy uważają, że 0777 jest dziedziczony przez każdy plik w folderze. Jest źle . Nie możesz edytować pliku, jeśli nie masz w
uprawnień tylko dlatego, że jego folder nadrzędny to 0777. Nie możesz odczytać pliku, jeśli nie ma on r
uprawnień.
Jak to zabezpieczyć?
Jeśli masz dostęp do jakiejś powłoki lub jeśli twój klient FTP pozwala ci zmienić właściciela plików i wiesz, którego właściciela potrzebujesz, możesz utworzyć folder i ustawić jego właściciela na proces apache (zazwyczaj nobody
, daemon
lub apache
) i po prostu ustaw uprawnienia 0700. Problem polega na tym, że inni użytkownicy, tacy jak ty, podczas przeglądania za pomocą klienta FTP, nie będą mogli odczytać plików utworzonych później przez PHP, co niekoniecznie jest problemem.
OK, ale co z plikami?
Nie mówię o ryzyku związanym z files
wykonywaniem, ponieważ nie ma powodu, dla którego chciałbyś wymusić x
zezwolenie na plik, który nie powinien być wykonywany w pierwszej kolejności.
Jeśli jakaś aplikacja internetowa musi zapisać w istniejącym pliku, wystarczy ustawić go na 0666 (lub 0600, jeśli właścicielem jest użytkownik Apache).