Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Mam zainstalowanego Nginx'a uruchamianego jako www-data:www-data oraz PHP-FPM uruchamianego w trybie per user - jako użytkownik każdego z vhostów. Użytkownicy vhostów są dodatkowo w grupie www-data, a sockety FPM są własnością USER_VHOSTU:www-data oraz mają uprawniania 660.
Rozumiem że PHP odczytuje i wykonuje te pliki jako USER_VHOSTU:www-data (właściciel socketu), a Nginx pliki statyczne odczytuje jako www-data?
Jak więc powinienem ustawić uprawnienia plików stron (min. WP) aby było najbezpieczniej? Wszystkie pliki statyczne ustawić na 640 i nadać im właściciela USER_VHOSTU:www-data, a dla plików PHP 600 i właściciela USER_VHOSTU:USER_VHOSTU?
Jak zrobić żeby było to wygodniejsze? Można jakoś zmusić Nginx do odczytywania plików jako USER_VHOSTU:USER_VHOSTU? Mógłbym wtedy ustawić wszystko na USER_VHOSTU:USER_VHOSTU 600. Czy było by to bezpieczne?
Offline
711 dla katalogów vhosta. 644 dla plików wewnątrz, bo niektóre skrypty czasem się burzą.
Można jakoś zmusić Nginx do odczytywania plików jako USER_VHOSTU:USER_VHOSTU?[/quote]
U mnie to działa bez najmniejszych problemów.
[img]https://l0calh0st.pl/obrazki/userbar.png[/img]
Offline
Da się osobno dla każdego usera odpalić demona php-fpm, z osobnym konfigiem per/user i osobno dla każdego usera obciąć mu uprawnienia przez cgroup.
W Nginxie wtedy trzeba każdemu pacjentowi zrobić vhosta i w nim ustawić, przez jaki socket ma iść php.
Samego Nginxa nie ma co puszczać jako osobny user (podobnie z resztą, jak Apacha, ale to inny temat), bo on tylko serwuje pliki, nic innego nie robi, i nie musi (nawet nie powinien) mieć prawa zapisu w folderach, w których ma pliki do serwowania.
95% infekcji Wordpressów i innych CMSów (np przez podrzucenie c99.php) wynika z tego, że serwer www i parser php mają prawo zapisu w folderach z wykonywanymi skryptami PHP.
To by było na tyle
;-)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00132 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.91.223' WHERE u.id=1 |
0.00093 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.91.223', 1733044174) |
0.00053 | SELECT * FROM punbb_online WHERE logged<1733043874 |
0.00057 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=26030 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00137 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=26030 ORDER BY p.id LIMIT 0,25 |
0.00097 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=26030 |
Total query time: 0.00589 s |