Jakim użytkownikiem powinny być NGinx i PHP?

15

Uprawnienia to coś, co pomyliło mi się z Linuksem. Tak więc w tej samej chwili moje instancje NGinx i PHP-FPM działają z użytkownikiem i grupą:

www-data

Czy to standard? Mam problem z przesyłaniem plików.

Przykład: plik zostałby przesłany zarówno z danymi użytkownika, jak i grupy www. Teraz, ze względu na sposób, w jaki ustawiam uprawnienia (0440) w mojej aplikacji internetowej, nie mogę zalogować się przez ssh na moim normalnym koncie, aby pobrać te pliki. Tego nie można zmienić.

Myślałem o zmianie instancji nginx i php, aby zachować grupę, ale zmień je, aby działały pod moją nazwą użytkownika.

Jaki jest tutaj prawidłowy sposób obsługi uprawnień? Dziękuję Ci.

The Pixel Developer
źródło

Odpowiedzi:

12

Oto jak to działa: Kiedy logujesz się przez FTP / SSH i przesyłasz pliki, są one tworzone na podstawie twoich uprawnień. Prawdopodobnie twój webroot jest dostępny do zapisu na całym świecie (0777), co jest niepewne - każdy użytkownik systemu może coś tam napisać. PHP działa z różnymi uprawnieniami użytkownika (są one określone w konfiguracji PHP-FPM, a nie w konfiguracji nginx), a ponieważ katalog można zapisywać na całym świecie, użytkownik PHP (www-data) również może tam pisać. Ale właścicielem tego pliku jest www-data, a nie twoje konto. Są to 2 różne konta na poziomie uprawnień systemu plików.

Sugeruję utworzenie dedykowanego użytkownika z możliwie najmniejszymi uprawnieniami, który posiadałby katalog webroot i byłby używany do przesyłania FTP / SSH ORAZ uruchamiałby php. Powinieneś zmienić konfigurację PHP-FPM, w dziale roboczym jest wpis użytkownika i konfiguracja NGINX, abyś mógł sprawić, że pliki twojej witryny nie będą czytelne dla świata i bardziej bezpieczne.

Nie uruchamiaj PHP z uprzywilejowanym użytkownikiem (uprawnienia sudo, uprawnienia do zapisu poza dokumentem docroot), ponieważ mogłoby to zagrozić bezpieczeństwu serwera.

Kristaps
źródło
1
Dobra odpowiedź, stworzyłem nowego użytkownika, nowe foldery, skopiowałem wszystko, zastosowałem prawidłowe uprawnienia i wykończyłem użytkownika. Działa ładnie. Dziękuję Ci.
The Pixel Developer
Czy mogę po prostu dodać użytkownika FTP do www-datagrupy zamiast tworzyć użytkownika dedykowanego? Czy rozwiązuje problem @ ThePixelDeveloper? Dzięki.
Vladyslav Turak
2

www-dataUżytkownik i grupa są dość standardowe. Może to być www lub sieć w innych systemach, ale idea jest taka sama: uruchom usługi sieciowe z dedykowanym kontem. W związku z tym, gdy serwer WWW zostanie przejęty, osoba atakująca będzie mogła uzyskać dostęp tylko do plików, które to konto zostało przyznane.

Jeśli użytkownik musi zarządzać usługami internetowymi, należy dodać użytkownika do odpowiedniej grupy (www-data) lub pozwolić mu su (lub sudo) do odpowiedniego użytkownika (nadal www-data).

Benoit
źródło
10
Powodem dla danych www jest to, że jest to konto z zerowymi uprawnieniami - nie może zapisywać do żadnego pliku w całym systemie plików, nie może czytać tylko do plików odczytywalnych na całym świecie. Wcześniej do tego celu używano wbudowanego użytkownika „nobody”. Jednakże, tworząc „dane www”, możesz zezwolić temu użytkownikowi na zapisywanie niektórych plików bez konieczności zapisywania tych plików na całym świecie (co jest złe). Podstawowa zasada, że ​​„dane www” są tak samo uprzywilejowane jak „nikt” pod każdym innym względem, jest prawdziwa.
thomasrutter
@ thomasrutter, z tego co rozumiem, powinienem uruchomić Nginx i PHP-FPM pod użytkownikiem www-data, który należy do grupy www-data. Jeśli chcę, aby ten użytkownik mógł read& writedo jakiegoś folderu, muszę mu dać odpowiednie uprawnienia. W większości przypadków byłby to folder główny /var/www/htmli 755uprawnienia. Czy mam rację? Dzięki!
Vladyslav Turak
1

Ze względów bezpieczeństwa staram się unikać wykonywania skryptów należących do nginx / php będących własnością danych www.

Ed Bloom
źródło
9
rozwinąłbyś to?
Karussell